是否可以通过 onPause return 值?
Is it possible to return values through onPause?
我正在 Android 中进行试验,看看如何将 return 值返回到 Main Activity(来自 child activity,Activity2),想问一下合适的方法
在我的 Main Activity 中,我有一个函数可以在字符串中显示请求代码和结果代码以进行概念验证:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String a2return = "A2 reqcode: "+requestCode + "A2 result: "+resultCode;
TextView textView = findViewById(R.id.A2result);
textView.setText(a2return);
}
在我的 child activity、Activity2 中,我有以下函数,它们是唯一将 finish() 函数调用到 return 到 Main 的函数Activity:
// "Send text back" button click
public void onButtonClick(View view) {
Intent resultIntent = new Intent();
resultIntent.putExtra("rv1", value);
resultIntent.putExtra("rv2",value+99);
setResult(Activity2.RESULT_OK, resultIntent);
finish();
}
@Override
public void onPause() {
super.onPause();
String status = "Im in PAUSE, wait a bit";
// Capture the layout's TextView and set the string as its text
TextView textView = findViewById(R.id.a2_status);
textView.setText(status);
Intent resultIntent = new Intent();
resultIntent.putExtra("rv1", value);
resultIntent.putExtra("rv2",value+99);
setResult(Activity2.RESULT_OK, resultIntent);
finish();
}
通过 'OnButtonClick' 返回 Main Activity 按预期正常工作。在 Main Activity 中,我看到适当的代码表明 Activity2 已完成。但是,onPause 不会。当用户按下后退按钮返回 Main Activity 时调用 onPause 函数,这是 Android 清单中指示的标准后退按钮。
<activity android:name=".Activity2" android:parentActivityName=".MainActivity">
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
按照我在这里编写代码的方式,它应该以与 OnButtonClick 相同的方式完成。 onPause 激活后不意味着 return 什么吗?
为此,您应该覆盖 onBackPressed()
而不是 onPause()
:
@Override
public void onBackPressed() {
Intent resultIntent = new Intent();
resultIntent.putExtra("rv1", value);
resultIntent.putExtra("rv2",value+99);
setResult(Activity2.RESULT_OK, resultIntent);
super.onBackPressed();
}
对于操作栏中的向上导航按钮,使用如下内容:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return (super.onOptionsItemSelected(item));
}
我正在 Android 中进行试验,看看如何将 return 值返回到 Main Activity(来自 child activity,Activity2),想问一下合适的方法
在我的 Main Activity 中,我有一个函数可以在字符串中显示请求代码和结果代码以进行概念验证:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String a2return = "A2 reqcode: "+requestCode + "A2 result: "+resultCode;
TextView textView = findViewById(R.id.A2result);
textView.setText(a2return);
}
在我的 child activity、Activity2 中,我有以下函数,它们是唯一将 finish() 函数调用到 return 到 Main 的函数Activity:
// "Send text back" button click
public void onButtonClick(View view) {
Intent resultIntent = new Intent();
resultIntent.putExtra("rv1", value);
resultIntent.putExtra("rv2",value+99);
setResult(Activity2.RESULT_OK, resultIntent);
finish();
}
@Override
public void onPause() {
super.onPause();
String status = "Im in PAUSE, wait a bit";
// Capture the layout's TextView and set the string as its text
TextView textView = findViewById(R.id.a2_status);
textView.setText(status);
Intent resultIntent = new Intent();
resultIntent.putExtra("rv1", value);
resultIntent.putExtra("rv2",value+99);
setResult(Activity2.RESULT_OK, resultIntent);
finish();
}
通过 'OnButtonClick' 返回 Main Activity 按预期正常工作。在 Main Activity 中,我看到适当的代码表明 Activity2 已完成。但是,onPause 不会。当用户按下后退按钮返回 Main Activity 时调用 onPause 函数,这是 Android 清单中指示的标准后退按钮。
<activity android:name=".Activity2" android:parentActivityName=".MainActivity">
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
按照我在这里编写代码的方式,它应该以与 OnButtonClick 相同的方式完成。 onPause 激活后不意味着 return 什么吗?
为此,您应该覆盖 onBackPressed()
而不是 onPause()
:
@Override
public void onBackPressed() {
Intent resultIntent = new Intent();
resultIntent.putExtra("rv1", value);
resultIntent.putExtra("rv2",value+99);
setResult(Activity2.RESULT_OK, resultIntent);
super.onBackPressed();
}
对于操作栏中的向上导航按钮,使用如下内容:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return (super.onOptionsItemSelected(item));
}