【问题标题】:Starting a new activity via intent, sometimes works sometimes not通过意图启动新活动,有时有效,有时无效
【发布时间】: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


【解决方案1】:

在活动上调用finish() 时,会执行onDestroy() 方法,此方法可以执行以下操作:

  1. 关闭活动正在管理的所有对话框。
  2. 关闭活动正在管理的所有游标。
  3. 关闭任何打开的搜索对话框

    用这个更新你的:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    Button btnStart = (Button) findViewById(R.id.btnDisplay);
    btnStart.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this,  DrawingActivity.class);
        startActivity(intent);          
        // no use of finish(); here
        }
      });
    }
    

【讨论】:

    猜你喜欢
    • 2016-10-10
    • 1970-01-01
    • 2020-12-11
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多