Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当主题为theme.NoDisplay时,活动在反按时未关闭_Android_Android Activity - Fatal编程技术网

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时不执行