Android 当主题为theme.NoDisplay时,活动在反按时未关闭
我正在将活动主题设置为Android 当主题为theme.NoDisplay时,活动在反按时未关闭,android,android-activity,Android,Android Activity,我正在将活动主题设置为主题。节点显示,但当它打开但按下后退按钮时,活动未关闭/销毁。它应该在背压时关闭/销毁 伙计们,帮我解释为什么会这样,以及解决这个问题的方法 public class MainActivity extends Activity { // Tag of the Activity private static String TAG = "MainActivity"; @Override protected void onCreate(Bund
主题。节点显示
,但当它打开但按下后退按钮时,活动未关闭/销毁。它应该在背压时关闭/销毁
伙计们,帮我解释为什么会这样,以及解决这个问题的方法
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;
}
}
公共类MainActivity扩展活动{
//活动标签
私有静态字符串TAG=“MainActivity”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatabaseManager.init(this);
NFCIItem mNFCItem=新的NFCIItem();
mNFCItem.setSerialNumber(1);
DatabaseManager.getInstance().addWishList(mNFCItem);
最终列表wishLists=DatabaseManager.getInstance().getAllNFCSerialNumber();
Log.v(TAG,wishLists.toString());
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.main,menu);
返回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>
您可以覆盖后退按钮事件以手动关闭活动
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
YourActivity.this.finish();
return true;
}
}
您可以覆盖“上一步”按钮以启动主活动并立即关闭它,而无需动画。这将作为单个操作显示给用户
@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);
}
我想它正在关闭,但你看不到任何证据,因为它是“NoDisplay”。使用此主题的活动没有可见的UI(因此,此类活动处理UI事件不符合逻辑),因此不应保持活动状态。例如,请参见此问题:
如果确实希望此活动的布局可见并处理事件,则应使用不同的主题。另一方面,如果这是一个只进行一些后台处理的不可见活动,请在onCreate中调用finish(),在处理完成后将其关闭。我认为它正在关闭,但您没有看到任何证据,因为它是“NoDisplay”。2次反压是否如您所料?为什么要使用onCreate中未完成()的NodeDisplay活动?如果它没有可见的UI,就不应该让它保持活动状态。你能解释一下你想在这里实现什么样的用户界面/工作流程吗?@NigelK我知道要扫描NFC标签,你必须进行活动。在我们的案例中,对该活动没有任何看法。所以我想让它不可见。我调试应用程序,这个方法在将主题设置为Theme.NoDisplay时不执行。我调试应用程序,这个方法在将主题设置为Theme.NoDisplay时不执行