我在 Activity1 中有一个要由用户填写的表单和下一个按钮“下一步”。
当用户单击“下一步”按钮时,第二个 Activity Activity2 将启动。
在 Activity2 中,我有上一个按钮“上一个”。(* 不是设备后退按钮)
因此,当用户单击“Previous”按钮时,应打开 Activity1,并在表单中输入详细信息。
Activity1 不应刷新。
在 stackoverflow 上搜索了很多但没有运气..!!!
最佳答案
为什么不使用 startActivityForResults
然后在启动的 Activity 中 finish()
在启动的 Activity 中,您可以在 onCreate 方法 getIntent();
中访问您的 Intent ,然后您可以使用 setResult(Activity.RESULT_OK, result);
或 setResult(Activity.RESULT_OK);
(对于已取消的 Activity.RESULT_CANCELED
)返回结果代码和数据,设置结果后调用 finish 和然后返回(如果我没记错的话,代码不会退出方法)。
然后在第一个 Activity 中你得到结果并处理如何处理它:
onActivityResult(int requestCode, int resultCode, Intent data)
另一种选择:
您还可以使用按下后退按钮的逻辑从您的代码调用方法:super.onBackPressed();
编辑
正如我所 promise 的,这是一个示例
两个 Activity - 第一个有两个 TextView
和一个启动第二个 Activity 的按钮 -> 在第二个 Activity 中有两个 EditText
,你可以在其中输入一些数据当您按下上一个按钮时,它会返回到第一个 Activity 。如果您按下后退按钮而不是上一个按钮,您将进入取消的逻辑,该逻辑在示例中没有执行任何操作,只有一条评论。
主 Activity
TextView textViewFirstName;
TextView textViewFamilyName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewFirstName = (TextView)findViewById(R.id.first_name_edit_text);
textViewFamilyName = (TextView)findViewById(R.id.family_name_edit_text);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//requestCode here is 12345 that we passed when we started SecondActivity
if(resultCode == Activity.RESULT_OK){
String resultFirstName = data.getStringExtra("firstName");
String resultFamilyName = data.getStringExtra("familyName");
textViewFirstName.setText(resultFirstName);
textViewFamilyName.setText(resultFamilyName);
}
if (resultCode == Activity.RESULT_CANCELED) {
//Canceled logic
}
}
public void nextButtonClick(View view) {
Intent i = new Intent(view.getContext(), SecondActivity.class);
//If you want you could pass some additional data, like which action to take
//if you're reusing the second activity for more than one use case
i.putExtra("someAdditionalData", "Some string that you want to pass");
//12345 is int that you pass and will be returned as requestCode in onActivityResult
startActivityForResult(i, 12345);
}
第二个 Activity
EditText editTextFirstName;
EditText editTextFamilyName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
editTextFirstName = (EditText)findViewById(R.id.first_name_edit_text);
editTextFamilyName = (EditText)findViewById(R.id.family_name_edit_text);
Bundle bundle = getIntent().getExtras();
String someAdditionalData = bundle.getString("someAdditionalData");
}
public void previousButtonClick(View view) {
Intent returnIntent = new Intent();
returnIntent.putExtra("firstName", editTextFirstName.getText().toString());
returnIntent.putExtra("familyName", editTextFamilyName.getText().toString());
setResult(RESULT_OK, returnIntent);
finish();
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:text="Main"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:hint="First name"
android:id="@+id/first_name_edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:hint="Family name"
android:id="@+id/family_name_edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<Button
android:onClick="nextButtonClick"
android:text="Next"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
second_activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".SecondActivity">
<TextView
android:text="Second"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:hint="First name"
android:id="@+id/first_name_edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<EditText
android:hint="Family name"
android:id="@+id/family_name_edit_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<Button
android:onClick="previousButtonClick"
android:text="Previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
关于android - 在 android 中,如何恢复上一个 Activity ,点击第二个 Activity 的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458134/