web-dev-qa-db-ja.com

Android:クリックで別のアクティビティに移動するにはどうすればよいですか?

シーケンスの3番目のアクティビティに移動しようとしています。メインアクティビティから2番目のアクティビティに移動しても問題はありませんが、2番目から3番目のアクティビティに移動しようとすると、アプリケーションがクラッシュします。

2番目のアクティビティのコードは次のとおりです。

package com.example.helloandroid;

import Android.app.Activity;
//other imports here

public class Game extends Activity implements OnClickListener {

    private static final String TAG = "Matrix";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.matrix);
        View doneButton = findViewById(R.id.done_button);
        doneButton.setOnClickListener(this);
    }

    public void onClick(View v) { 
        switch (v.getId()) { 
            case R.id.done_button:
                Intent k = new Intent(this, GameTwo.class);
                startActivity(k);
                //finish();
                break;
        }
    }
}

そして、3番目のアクティビティのコード:

package com.example.helloandroid;

import Android.app.Activity;
//other imports here

public class GameTwo extends Activity {

   private static final String TAG = "Matrix";

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       this.setContentView(R.layout.matrixtwo);
       View donetwoButton = findViewById(R.id.donetwo_button);
   }
}
18
Biggsy

switchで次のコードを試してください。

try {
    Intent k = new Intent(Game.this, GameTwo.class);
    startActivity(k);
} catch(Exception e) {
    e.printStackTrace();
}

これが役に立ったと言って.....

24
Sumant
Intent k = new Intent(Game.this, GameTwo.class);
startActivity(k);

これは機能しますが、マニフェストで指定する必要もあります。

9
Noman

マニフェストで3つのアクティビティを宣言してください。アクティビティを作成し、宣言しない一般的なエラーです。

以下を使用して新しいアクティビティを呼び出します。

Intent k = new Intent(Game.this, GameTwo.class);
startActivity(k);
3
EhTd

これを試して

Intent intent = new Intent(getApplicationContext(), GameTwo.class);
startActivity(intent);
3
Joe

ロングショットですが...
問題はNullPointerExceptionが原因である可能性もあります
donetwo_buttonmatrixtwo.xmlで宣言されていない場合にスローされます...
(コピーと貼り付けのエラーはかなり一般的です)