将链接片段链接到抽屉布局中的项目
任何人都可以告诉我这里出了什么问题吗? 。我基本上只是试图告诉它,如果位置为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)
你缺少
ft.addToBackStack(null);
ft.commit();
请参考docs
检查这个
Fragment fragment = new YOURFRAGMENTNAME();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.content, fragment).commit();
仍然得到了同样的错误:■ – 2014-08-28 12:35:52
@zakbennani请检查布局文件u能PLZ上传日志 – 2014-08-28 12:39:16
@zakbennani检查编辑 – 2014-08-28 12:41:09
什么是对MyActivity.java:119? – Ozan 2014-08-28 12:45:17
我更新了整个文件 – 2014-08-28 12:51:24