我已经搜索了这个网站上的以前的帖子和网络上没有用.感谢您的任何帮助.
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 – 可调用的活动被调用两次所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)