2014-08-28 94 views
-1

任何人都可以告诉我这里出了什么问题吗? 。我基本上只是试图告诉它,如果位置为0,然后将片段设置为R.layout.fragment_fragmenta。将链接片段链接到抽屉布局中的项目

作为一个错误,我得到一个NullPointerException。任何帮助,将不胜感激球员。 由于提前,

public class MyActivity extends Activity implements AdapterView.OnItemClickListener { 

private DrawerLayout drawerLayout; 
private ListView listView; 

private ActionBarDrawerToggle drawerListener; 
private MyAdapter myAdapter; 
private android.view.ViewGroup container; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    drawerLayout=(DrawerLayout) findViewById(R.id.drawerLayout); 
    ActionBar actionBar = getActionBar(); 
    actionBar.setBackgroundDrawable(new ColorDrawable((Color.parseColor("#CC3232")))); 
    listView=(ListView) findViewById(R.id.drawerList); 
    myAdapter = new MyAdapter(this); 
    listView.setAdapter(myAdapter); 
    listView.setOnItemClickListener(this); 
    drawerListener= new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_action_expand,R.string.drawer_open, R.string.drawer_close){ 
     @Override 
     public void onDrawerClosed(View drawerView) { 
      Toast.makeText(MyActivity.this,"Drawer Closed", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      Toast.makeText(MyActivity.this,"Drawer Opened", Toast.LENGTH_SHORT).show(); 
     } 
    }; 

    drawerLayout.setDrawerListener(drawerListener); 
    getActionBar().setHomeButtonEnabled(true); 
    getActionBar().setDisplayHomeAsUpEnabled(true); 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    drawerListener.syncState(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.my, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    if(drawerListener.onOptionsItemSelected(item)){ 
     return true; 
    } 


    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    drawerListener.onConfigurationChanged(newConfig); 
} 


public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    selectItem(position); 
    if(position==0){ 

     setTitle("Fragment1"); 

     Fragment fragment = new fragmenta(); 
     FragmentManager manager = getFragmentManager(); 
     manager.beginTransaction().replace(R.id.mainContent, fragment).commit(); 

    } 
} 

public void selectItem(int position){ 
    listView.setItemChecked(position,true); 

} 
public void setTitle(String title){ 
    getActionBar().setTitle(title); 
} 

}

class MyAdapter extends BaseAdapter{ 
private Context context; 
String[] items; 
int[] images ={R.drawable.abc_ic_go, R.drawable.ic_action_gamepad,R.drawable.camera,R.drawable.abc_ic_search, R.drawable.phone,R.drawable.abc_ic_voice_search}; 
public MyAdapter(Context context) 
    { 
    this.context=context; 
    items=context.getResources().getStringArray(R.array.items); 
    } 
@Override 
public int getCount() { 
    return items.length; 
} 

@Override 
public Object getItem(int position) { 
    return items[position]; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = null; 
    if(convertView==null){ 
     LayoutInflater inflater= (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row =inflater.inflate(R.layout.layout, parent, false); 
    } 
    else { 
     row=convertView; 
    } 
    TextView titleTextView =(TextView) row.findViewById(R.id.textView1); 
    ImageView titleImageView = (ImageView) row.findViewById(R.id.imageView1); 
    titleTextView.setText(items[position]); 
    titleImageView.setImageResource(images[position]); 
    return row; 
} 

}

这是片段类:

public class fragmenta extends Fragment { 


public fragmenta() { 
    // Required empty public constructor 

} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_fragmenta, container, false); 
} 

}

这是错误日志:

08-28 14:42:07.817 22629-22629/com.example.dell.myapplication W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41944da0) 
08-28 14:42:07.817 22629-22629/com.example.dell.myapplication E/AndroidRuntime﹕ FATAL  EXCEPTION: main 
    Process: com.example.dell.myapplication, PID: 22629 
    java.lang.NullPointerException 
     at android.app.BackStackRecord.doAddOp(BackStackRecord.java:395) 
     at android.app.BackStackRecord.replace(BackStackRecord.java:430) 
     at android.app.BackStackRecord.replace(BackStackRecord.java:422) 
     at com.example.dell.myapplication.MyActivity.onItemClick(MyActivity.java:119) 
     at android.widget.AdapterView.performItemClick(AdapterView.java:308) 
     at android.widget.AbsListView.performItemClick(AbsListView.java:1524) 
     at android.widget.AbsListView$PerformClick.run(AbsListView.java:3531) 
     at android.widget.AbsListView$3.run(AbsListView.java:4898) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5586) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
     at dalvik.system.NativeStart.main(Native Method) 
+0

什么是对MyActivity.java:119? – Ozan 2014-08-28 12:45:17

+0

我更新了整个文件 – 2014-08-28 12:51:24

回答

0

你缺少

ft.addToBackStack(null); 
ft.commit(); 

请参考docs

检查这个

Fragment fragment = new YOURFRAGMENTNAME(); 
FragmentManager manager = getSupportFragmentManager(); 
manager.beginTransaction().replace(R.id.content, fragment).commit(); 
+0

仍然得到了同样的错误:■ – 2014-08-28 12:35:52

+0

@zakbennani请检查布局文件u能PLZ上传日志 – 2014-08-28 12:39:16

+0

@zakbennani检查编辑 – 2014-08-28 12:41:09