android – 可调用的活动被调用两次

android – 可调用的活动被调用两次,第1张

概述我正在尝试创建我的第一个 Android应用程序,并在添加SEARCH功能的过程中.我已经按照Android开发人员文档添加了“搜索”对话框和小部件.不幸的是,每当我执行搜索时,都会调用搜索活动的“onCreate”和“onNewIntent”.也就是说,通过在“ *** 作栏搜索”框中键入内容并按ENTER键,搜索称为“TWICE”.我被卡住了是否可以从可搜索的活动中返回一些全球标志,通知应用程序搜索已 我正在尝试创建我的第一个 Android应用程序,并在添加SEARCH功能的过程中.我已经按照AndroID开发人员文档添加了“搜索”对话框和小部件.不幸的是,每当我执行搜索时,都会调用搜索活动的“onCreate”和“onNewIntent”.也就是说,通过在“ *** 作栏搜索”框中键入内容并按ENTER键,搜索称为“TWICE”.我被卡住了是否可以从可搜索的活动中返回一些全球标志,通知应用程序搜索已经完成?是否正在调用搜索对话框和小部件?

我已经搜索了这个网站上的以前的帖子和网络上没有用.感谢您的任何帮助.

AndroIDManifest.xml中

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"    package="com.shop"    androID:versionCode="1"    androID:versionname="1.0" >    <uses-sdk        androID:minSdkVersion="14"        androID:targetSdkVersion="17" />    <uses-permission androID:name="androID.permission.INTERNET" />    <application        androID:allowBackup="true"        androID:icon="@drawable/ic_launcher"        androID:label="@string/app_name"        androID:theme="@style/Apptheme" >        <service androID:name="com.shop.RestIntentService" />        <activity            androID:name="com.shop.MainActivity"            androID:label="@string/app_name" >            <intent-filter>                <action androID:name="androID.intent.action.MAIN" />                <category androID:name="androID.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity            androID:name="com.shop.CatalogActivity"            androID:label="@string/app_name" >        </activity>        <activity            androID:name="com.shop.SearchableActivity"            androID:launchMode="singletop" >            <intent-filter>                <action androID:name="androID.intent.action.SEARCH" />            </intent-filter>            <!--            <intent-filter>                <action androID:name="androID.intent.action.VIEW" />            </intent-filter>            -->            <Meta-data                androID:name="androID.app.searchable"                androID:resource="@xml/searchable" />        </activity>        <Meta-data            androID:name="androID.app.default_searchable"            androID:value="com.shop.SearchableActivity" />    </application></manifest>

SearchableActivity.java

public class SearchableActivity extends ListActivity implements Receiver {    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        System.out.println("onCreate");        handleIntent(getIntent());    }    @OverrIDe    public voID onNewIntent(Intent intent) {        super.onNewIntent(intent);        System.out.println("onNewIntent");        setIntent(intent);        handleIntent(intent);    }    private voID handleIntent(Intent intent) {        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {            String query = intent.getStringExtra(SearchManager.query);            doSearch(query);        }    }    private voID doSearch(String queryStr) {        System.out.println("searching..." + queryStr);    }

CatalogActivity.java

@OverrIDe       public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater inflater = getMenuInflater();        inflater.inflate(R.menu.sample,menu);        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);        SearchVIEw searchVIEw = (SearchVIEw) menu.findItem(R.ID.menu_search).getActionVIEw();        searchVIEw.setSearchableInfo(searchManager                .getSearchableInfo(getComponentname()));        //return super.onCreateOptionsMenu(menu);        return true;    }

sample.xml中

<item    androID:ID="@+ID/menu_search"    androID:actionVIEwClass="androID.Widget.SearchVIEw"    androID:icon="@androID:drawable/ic_menu_search"    androID:showAsAction="ifRoom|collapseActionVIEw"    androID:title="@string/menu_search"/>
解决方法 我认为NewNntent和onCreate上的方法是互斥的.你将launchMode设置为“singletop”,所以方法onNewIntent将被调用而不是onCreate.

当一个搜索请求被处理两次时,我有类似的问题.使用WXGA 10.1平板电脑仿真器中的SearchableDictionary示例,我发现第一个搜索呼叫工作正常,但随后的调用创建两个SEARCH事件,因此它们被处理两次.有人提到了Ti的BUG. (http://developer.appcelerator.com/question/127166/android-search-keyboardtype-fires-return-event-twice)

我测试了一个真正的三星平板电脑上的应用程序,我没有看到两个SEARCH事件,所以我猜这是一个模拟器的问题,而不是一个代码问题.

总结

以上是内存溢出为你收集整理的android – 可调用的活动被调用两次全部内容,希望文章能够帮你解决android – 可调用的活动被调用两次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1133046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存