1

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

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

安卓清单

    <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。谢谢你。

4

4 回答 4

0

试试这个代码....

你用 super.onBackPressed() 覆盖onBackPressed ()方法。

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

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

于 2013-06-27T14:47:10.013 回答
0

也许你可以检查一下,我遇到了同样的问题,最后我偶然发现了这个解决方案。我不确定它是否适合你,但你可以试一试。

于 2013-10-24T05:34:12.350 回答
0

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

重写onBackPressed方法SearchableActivity为:

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

希望能帮助到你。

于 2013-06-27T14:21:30.573 回答
0

您可以添加标志FLAG_ACTIVITY_REORDER_TO_FRONT来启动您的SearchActivity. 如果已经有一个实例,这将把它Activity带到前面,这样你就不必继续支持其他实例。

另外,可能与您的问题无关,但您为什么有

onPostExecute();

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

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

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

于 2013-06-27T14:25:04.540 回答