首页 > 解决方案 > onActivityResult 不能与 onBackPressed 一起使用?

问题描述

我有两个活动,Activity1.javaActivity2.javaActivity1.java开始,当用户按下操作栏上的后退按钮时Activity2.java,我需要Activity2.java返回一些数据。Activity1.java但由于某种原因,它不起作用......

活动1.java:

public class Activity1 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_1);

        Intent intent = new Intent(this, Activity1.class);
        int requestCode = 100;

        startActivityForResult(intent, requestCode);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        Log.i("TEST", "RequestCode:" + requestCode);
        Log.i("TEST", "ResultCode:" + resultCode );
        switch (resultCode) {
            case RESULT_OK:
                Log.i("TEST", data.getStringExtra("MESSAGE"));
                break;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

Activity2.java

public class Activity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
    }

    @Override
    public void onBackPressed() {
        Intent intent = new Intent(this, Activity1.class);
        intent.putExtra("MESSAGE", "Hello from Activity 2!");
        Log.i("TEST", "Setting result...");
        setResult(RESULT_OK, intent);
        finish();
        super.onBackPressed();
    }
}

当我运行该应用程序时,只有“设置结果...”会记录到 Logcat。似乎甚至没有调用 onActivityResult 覆盖。我尝试在 Activity2 的 onCreate() 方法中更改请求代码、结果代码和设置结果,但没有任何效果。

有人可以帮忙吗?任何帮助,将不胜感激!

标签: javaandroidandroid-activityonactivityresult

解决方案


您没有正确调用意图:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_1);

    Intent intent = new Intent(this, Activity1.class);
    int requestCode = 100;

    startActivityForResult(intent, requestCode);
}

应该:

Intent intent = new Intent(this, Activity2.class);

推荐阅读