0

我的应用程序的底部在每个活动中都是相同的。因此,我创建了一个 xml 文件,并将其包含在活动的每个 xml 文件中

<include layout="@layout/menu_bottom"/>

然后我创建了一个名为 Main Activity 的类,它扩展了我在其中编写的 Activity:

public class MainActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle b = getIntent().getExtras();
    int res = b.getInt("layout", R.layout.home);

    setContentView(res);

    Button itinerari = (Button) findViewById(R.id.itinerari);

    itinerari.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(getApplicationContext(), Itinerari.class);
            startActivity(i);
        }
    });


    Button spostamenti = (Button) findViewById(R.id.spostamenti);

    spostamenti.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(getApplicationContext(), Spostamenti.class);
            startActivity(i);
        }
    });


    Button mappa = (Button) findViewById(R.id.mappa);

    mappa.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(getApplicationContext(), Mappa.class);
            startActivity(i);
        }
    });


    Button info = (Button) findViewById(R.id.info);

    info.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent i = new Intent(getApplicationContext(), Info.class);
            startActivity(i);
        }
    });
}
}

问题是当我启动应用程序时出现错误int res = b.getInt("layout", R.layout.home);。它说问题是NullPointerException

然后,如果我手动设置setContentView(R.layout.home)它可以工作

4

2 回答 2

2
Bundle b = getIntent().getExtras();
int res = b.getInt("layout", R.layout.home);

b可能为空(如果意图中没有额外信息)。所以你应该在使用前检查它的null价值。

于 2013-07-30T13:08:17.690 回答
0

尝试

Bundle b = getIntent().getExtras();
if(b!=null)
{
int res = b.getInt("layout", R.layout.home);
}
else
 {
 Log.d("b","Bundle b is null");
 }
于 2013-07-30T13:15:10.703 回答