Bil*_*ill 3 android android-layout activity-lifecycle activity-finish android-activity
单击按钮时,我需要关闭活动。不幸的是,当单击按钮时,活动确实消失了,但仍在后台。用户仍然可以选择它并返回到前面。我需要的是完全消失/破坏的活动。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
Run Code Online (Sandbox Code Playgroud)
我在相关问题上搜索了 SO,但是,它们都没有帮助完全关闭活动。我已经尝试添加返回,添加另一个广播侦听器并传递命令以在 onCreate 之外调用完成。所以在这一点上,问题是 - 这真的可能还是 Android 是这样工作的,您可以调用 finish() 但它仍然在后台,用户可以重新启动它。
这是xml文件。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.app1.test.myapplication">
<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>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
编辑:添加 android:excludeFromRecents="true" 并不能解决问题。以下是重新创建此问题的步骤,如果有人认为它是重复的或已解决,请尝试发表评论/答案,我会接受。
试试吧。在你显化。
<activity
android:excludeFromRecents="true"
android:name=".Activities.SplashActivity"
android:theme="@style/AppThemeSubActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
现在在你的java代码中。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_search:
// Intent intent = new Intent(MainActivity.this, SearchActivity.class);
// startActivity(intent);
finish();
System.exit(0);}
}
Run Code Online (Sandbox Code Playgroud)
把额外的行 System.exit(0); 调用完成后它对我有用。
| 归档时间: |
|
| 查看次数: |
6734 次 |
| 最近记录: |