我想从第一个活动转到第二个活动,然后从第二个活动转到第三个活动。在第三个活动中,我想在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);
}