当我点击 android 中的 minimize/back 按钮时,activity 消失了
activity gets disappear when i click minimize/back button in android
在我的应用程序中,我有一个 activity,如下图所示 [![在此处输入图片描述][1]][1]
如果我单击按钮 "Add Patient",它将重定向到另一个 activity。如下图所示
如果我在 "NewPatient" activity 中单击主页按钮,它会显示 "My Patients" activity 和 "NewPatient" activity disappears.Can请建议当应用程序处于 "NewPatient" activity.
时按下主页按钮时如何保留 "NewPatient" activity
清单即时消息使用:
<activity
android:name=".activity.patient.PatientsActivity"
android:parentActivityName=".activity.MainActivity"/>
<activity
android:name=".activity.patient.PatientFormActivity"
android:parentActivityName=".activity.patient.PatientsActivity" />
只需使用 Intent 即可转到 HomeActivity;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) // Press Back Icon
{
Intent i=new Intent(NewPatient.this,HomeActivity.class);
startActivity(i);
}
return super.onOptionsItemSelected(item);
}
你的代码在哪里?
但是你可以在你的代码中使用这一行
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
//do somethings you want
}
return super.onKeyDown(keyCode, event);
}
第一个解决方案。基于启动模式。
你可以把"My Patients"activity移到"New Patient"activity前面。
- 在清单
中将android:launchMode="singleTask"设置为"My Patients"
- 覆盖 "New Patient" activity 的
onBackPressed()
方法,并从中启动 "My Patients",而不调用 super。
您可以阅读有关启动模式的更多信息here。
第二种方案。基于捆绑
- 从 "My Patients" activity.
开始 "New Patient" activity 结果
- 重写 "New Patient" activity 的
onBackPressed()
方法,并将数据保存到 Intent,就像将其保存到 onSaveInstanceState
[= 中的 Bundle 一样49=].
- 在调用
super.onBackPressed()
之前,通过调用 setResult
将保存的数据提供给 "My Patients" activity
- 处理 "My Patients"
onActivityResult()
内保存的数据 activity
- 使用保存的数据从 "My Patients" activity 启动 "New Patient" activity 的新实例。
第二个更合适,痛苦更小。
我认为您不需要针对此问题进行任何额外的操作。您在传递意图或任何清单时在其他地方犯了错误。如果您发现任何有用的东西,请使用以下示例:
从我的 MainActivity.java on textview click listener 我开始了另一个 activity:
findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getBaseContext(),Activity2.class));
}
});
这些活动的清单是:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ccc.Whosebug">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Activity2">
</activity>
</application>
</manifest>
如你所愿。当我们回到 app.Hope 时,Activity2 保持打开状态,它对您有帮助。
在我的应用程序中,我有一个 activity,如下图所示 [![在此处输入图片描述][1]][1]
如果我单击按钮 "Add Patient",它将重定向到另一个 activity。如下图所示
如果我在 "NewPatient" activity 中单击主页按钮,它会显示 "My Patients" activity 和 "NewPatient" activity disappears.Can请建议当应用程序处于 "NewPatient" activity.
时按下主页按钮时如何保留 "NewPatient" activity清单即时消息使用:
<activity
android:name=".activity.patient.PatientsActivity"
android:parentActivityName=".activity.MainActivity"/>
<activity
android:name=".activity.patient.PatientFormActivity"
android:parentActivityName=".activity.patient.PatientsActivity" />
只需使用 Intent 即可转到 HomeActivity;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) // Press Back Icon
{
Intent i=new Intent(NewPatient.this,HomeActivity.class);
startActivity(i);
}
return super.onOptionsItemSelected(item);
}
你的代码在哪里? 但是你可以在你的代码中使用这一行
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
//do somethings you want
}
return super.onKeyDown(keyCode, event);
}
第一个解决方案。基于启动模式。
你可以把"My Patients"activity移到"New Patient"activity前面。
- 在清单 中将android:launchMode="singleTask"设置为"My Patients"
- 覆盖 "New Patient" activity 的
onBackPressed()
方法,并从中启动 "My Patients",而不调用 super。
您可以阅读有关启动模式的更多信息here。
第二种方案。基于捆绑
- 从 "My Patients" activity. 开始 "New Patient" activity 结果
- 重写 "New Patient" activity 的
onBackPressed()
方法,并将数据保存到 Intent,就像将其保存到onSaveInstanceState
[= 中的 Bundle 一样49=]. - 在调用
super.onBackPressed()
之前,通过调用 - 处理 "My Patients"
onActivityResult()
内保存的数据 activity - 使用保存的数据从 "My Patients" activity 启动 "New Patient" activity 的新实例。
setResult
将保存的数据提供给 "My Patients" activity
第二个更合适,痛苦更小。
我认为您不需要针对此问题进行任何额外的操作。您在传递意图或任何清单时在其他地方犯了错误。如果您发现任何有用的东西,请使用以下示例:
从我的 MainActivity.java on textview click listener 我开始了另一个 activity:
findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getBaseContext(),Activity2.class));
}
});
这些活动的清单是:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ccc.Whosebug">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Activity2">
</activity>
</application>
</manifest>
如你所愿。当我们回到 app.Hope 时,Activity2 保持打开状态,它对您有帮助。