0

すべてのアクティビティで同じアプリの下部があります。だから私はxmlファイルを作成し、それをアクティビティの各xmlファイルに含めました

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

次に、Activity を拡張する Main 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);

bnull の場合があります (意図的に追加情報がない場合)。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 に答える