按“上一步”按钮3次可返回“主活动”



我有一个主要活动,可以启动对可搜索活动的搜索。我还可以在搜索活动中启动搜索。所以我的可搜索活动的启动模式是singleTop。

如果我在主活动中进行搜索,我可以通过单击一次返回按钮从可搜索活动返回到主活动。现在的问题是,在主活动中进行第一次搜索后,如果我在可搜索活动中进行另一次搜索,我需要单击三次返回按钮才能返回到主活动。我不确定我的代码中遗漏了什么。

Android清单

    <activity 
        android:name=".SearchableActivity"
        android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data 
            android:name="android.app.searchable"
            android:resource="@xml/searchable"/>
    </activity>

可搜索活动

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_listview);
    getListView().setEmptyView(findViewById(R.id.lblNoResults));
    db = new StoreDB(SearchableActivity.this);
    onPostExecute();
}
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setContentView(R.layout.activity_listview);
    getListView().setEmptyView(findViewById(R.id.lblNoResults));
    db = new StoreDB(SearchableActivity.this);
    onPostExecute();
    setIntent(intent);
}
@Override
public void onDestroy() {
    super.onDestroy();
    db.close();
}

我在可搜索的活动中有onDestroy。非常感谢。

问题在于,返回MainActivity时没有完成SearchableActivity。

SearchableActivity中的onBackPressed方法重写为:

 @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        finish();
    }

希望能有所帮助。

您可以添加标志flag_ACTIVITY_REORDER_TO_FRONT来启动SearchActivity。如果已经有Activity的实例,那么这将把它放在前面,这样您就不必一直通过其他实例进行备份。

此外,可能与你的问题无关,但为什么你有

onPostExecute();

onCreate()中?这是你自己的方法还是AsyncTask的方法?如果它在AsyncTask中,那么您不应该这样做。根据文件

不要手动调用onPreExecute()、onPostExecute(Result)、doInBackground(Params…)、onProgressUpdate(Progress…)。

您应该让它在doInBackground()完成时被调用

试试这个代码。。。。

使用super.onBackPressed().覆盖onBackPressed)方法

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    finish();
}

它用于检测super.onBackPressed()的默认反压。因此,按下后退按钮后,您的当前活动将使用finish()完成。

也许你可以检查一下,我遇到了同样的问题,最后我意外地找到了这个解决方案。我不确定它对你是否有效,但你可以试一试。

最新更新