安卓:如何在点击时转到另一个活动?

19

我正在尝试进入一系列活动的第三个活动。 从主要活动到第二个活动的转换很顺利,但是当我尝试从第二个活动转到第三个活动时,应用程序崩溃了。

这是我第二个活动的代码:

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;
        }
    }
}

第三个活动的代码:

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);
   }
}

1
你能把异常信息粘贴在这里吗?使用ADB LOGCAT。 - Swaroop
不确定,但是尝试在第二个活动中使用Button而不是View,然后在按钮的对象中读取view((Button)findViewById())。这可能会解决你的问题,否则就像@swaroop所说,将异常粘贴到这里,以便其他人可以理解。 - Ankit
https://dev59.com/n2Ys5IYBdhLWcg3wBvf7 - Ali Gh
6个回答

24

switch 中尝试以下代码:

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

告诉我这是否有帮助......


不一定需要,但在开发过程中会有帮助。 - M.Arjmandi
3
捕捉异常却不显示任何信号是非常糟糕的做法...如果你不想让它传递到方法链上,至少在控制台或者(最好的方式)文件中记录它的信息或栈跟踪。 - Massimiliano Kraus

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

这样做是可行的,但你还需要确保在清单文件中指定了这一点。


4

试试这个

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

4

请确保已在清单文件中声明了三个活动。常见的错误是创建活动而未声明。

使用以下方法调用新的 Activity:

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

1

确保在清单文件中声明了该活动。

如果您只想从一个活动转移到另一个活动,可以按照以下代码进行操作。

startActivity(new Intent(getApplicationContext(), NextActivity.class));

如果您想在移动到另一个活动时发送任何数据,请按照以下代码。
Intent intent = new Intent(MainActivity.this, NextActivity.class);
        intent.putExtra("Title", title);
        startActivity(intent);

0

虽然可能性不大,但是......
你的问题也可能是由NullPointerException引起的
如果在matrixtwo.xml中没有声明donetwo_button,则会抛出该异常...
(复制粘贴错误非常普遍)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接