簡體   English   中英

未調用 onActivityResult 方法

[英]The onActivityResult method is not called

我想從第一個活動轉到第二個活動,然后從第二個活動轉到第三個活動 第三個活動中,我想在 EditText 中輸入名稱,然后按下按鈕后,轉到第一個活動,同時發送在第三個活動中輸入的信息。

我遇到過兩種情況,第一種情況:finish() 方法以調用super.finish() 結束。 不幸的是,在這種情況下,我沒有返回到第一個活動,而是返回到第二個活動。

第二種情況:finish() 方法以startActivity(i) 調用結束。 不幸的是,在這種情況下,沒有調用 MainActivity 中的方法 - onActivityResult,這將導致第三個活動中輸入的數據缺失。

我通常如何從我的第三個活動中接收數據?

這是我的代碼:

第一的:

public class MainActivity extends AppCompatActivity {

    TextView textViewInformation;
    Button button_GoToSecond;

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

        textViewInformation = findViewById(R.id.textView);
        button_GoToSecond = findViewById(R.id.button);

        button_GoToSecond.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent i = new Intent(MainActivity.this, Second.class);
                startActivity(i);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent i) {

        if((requestCode == 1) &&(resultCode == RESULT_OK)) {

            String name = i.getStringExtra("name");
            textViewInformation.setText(name);
        }
    }
}

第二:

public class Second extends AppCompatActivity {

    Button button_GoToThird;

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

        button_GoToThird = findViewById(R.id.button2);

        button_GoToThird.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent i = new Intent(Second.this, Third.class);
                startActivity(i);
            }
        });
    }
}

第三(第一版):

public class Third extends AppCompatActivity {

    EditText editText_Data;
    Button button_SendData;

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

        editText_Data = findViewById(R.id.editText);
        button_SendData = findViewById(R.id.button3);

        button_SendData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                finish();
            }
        });

    }

    public void finish() {

        String name;
        name = editText_Data.getText().toString();

        Intent i = new Intent(Third.this, MainActivity.class);
        i.putExtra("name", name);

        setResult(RESULT_OK, i);
        super.finish();
    }
}

第三(第二版):

public class Third extends AppCompatActivity {

    EditText editText_Data;
    Button button_SendData;

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

        editText_Data = findViewById(R.id.editText);
        button_SendData = findViewById(R.id.button3);

        button_SendData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                finish();
            }
        });

    }

    public void finish() {

        String name;
        name = editText_Data.getText().toString();

        Intent i = new Intent(Third.this, MainActivity.class);
        i.putExtra("name", name);

        setResult(RESULT_OK, i);
        startActivity(i);
    }

將您的finish方法更改為:

public void finish() {

    String name;
    name = editText_Data.getText().toString();

    Intent i = new Intent(Third.this, MainActivity.class);
     Bundle bundle = new Bundle();
     bundle.putString("name", name);

    startActivityForResult(i, RESULT_OK, bundle); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM