我将活动主题设置为Theme.NoDisplay
但是当它打开但按下按钮时活动未关闭/销毁。它应该在背压时关闭/销毁。
伙计们帮助我为什么会这样以及解决这个问题的任何解决方案。
public class MainActivity extends Activity {
// Tag of the Activity
private static String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatabaseManager.init(this);
NFCIItem mNFCItem = new NFCIItem();
mNFCItem.setSerialNumber(1);
DatabaseManager.getInstance().addWishList(mNFCItem);
final List<NFCIItem> wishLists = DatabaseManager.getInstance().getAllNFCSerialNumber();
Log.v(TAG, wishLists.toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
的AndroidManifest.xml
<activity
android:name="com.example.appdemo.MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoDisplay" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 0 :(得分:3)
我想它已经结束但你没有看到这个的证据,因为它是'NoDisplay'。使用此主题的Activity没有可见的UI(因此,这样的Activity处理UI事件不合逻辑)并且不应该保持活动状态。例如,请参阅此问题:
how to completely get rid of an activity's GUI (avoid a black screen)
如果您确实希望此Activity的布局可见并处理事件,则应使用其他主题。如果另一方面这是一个不可见的Activity,它只是进行一些后台处理,请在onCreate中调用finish()以在完成处理时关闭它。
答案 1 :(得分:-2)
您可以覆盖后退按钮事件以手动关闭活动
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
YourActivity.this.finish();
return true;
}
}
答案 2 :(得分:-3)
您可以覆盖后退按钮以启动主要活动,并立即关闭它而不需要动画。这将对用户显示为单个操作。
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
overridePendingTransition(R.anim.slide_in_right,
R.anim.slide_out_right);
}