【发布时间】:2016-09-01 15:04:27
【问题描述】:
假设我有两个活动,我想从一个跳到另一个。我可以通过两种方式做到这一点:
1) 直接,作为简单的传递 2) 在主活动中按下按钮后
这两种情况的不同之处在于我将intent 定义放在了哪里。在第一种情况下,在 onCreate 方法中的任何位置;在第二种情况下,在 onClickListener 回调中。两种情况的代码都这么简单:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnStart = (Button) findViewById(R.id.btnDisplay);
/* Intent intent = new Intent(MainActivity.this, DrawingActivity.class);
startActivity(intent);
finish();*/
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, DrawingActivity.class);
startActivity(intent);
finish();
}
});
}
}
对我来说,这两种情况没有本质区别。但是,当我从按钮启动第二个活动时,我的应用程序总是崩溃(检查 logcat,我用来绘制相机预览的表面纹理中似乎有一个空指针)。如果我使用第一种方法启动第二个活动,一切正常,告诉我第二个活动没问题,问题出在我定义意图的方式上。
有什么区别?为什么当我调用按钮内的第二个活动时,我的应用程序崩溃了,而如果我直接调用它就不会发生这种情况?
希望我能解释一下自己,
谢谢
【问题讨论】:
-
你应该从崩溃中发布你的 logcat。
-
定位你的logcat,但我猜你的MainActivity中有SurfaceTexture,没有正确初始化。
-
发布您的日志,我们将能够回答您的问题
标签: android android-intent android-activity onclick onclicklistener