Android 从McClickListener调用搜索对话框
我有个奇怪的问题。我正在尝试在我的应用程序中实现搜索。如果我按下搜索按钮或从onStart功能调用onSearchRequested,搜索屏幕将显示。但如果我从onItemClick侦听器的onItemClick函数调用OnSearchRequested,我会得到一个NullPointerException。我还尝试获取搜索管理器的实例,并直接调用startSearch函数,但也失败了 我想这个人也有同样的问题,没有得到回答,但我不确定 以下是我的OnStart方法:Android 从McClickListener调用搜索对话框,android,Android,我有个奇怪的问题。我正在尝试在我的应用程序中实现搜索。如果我按下搜索按钮或从onStart功能调用onSearchRequested,搜索屏幕将显示。但如果我从onItemClick侦听器的onItemClick函数调用OnSearchRequested,我会得到一个NullPointerException。我还尝试获取搜索管理器的实例,并直接调用startSearch函数,但也失败了 我想这个人也有同样的问题,没有得到回答,但我不确定 以下是我的OnStart方法: @Override
@Override
protected void onStart() {
super.onStart();
this.setContentView(R.layout.mainactivity);
ListView lv = (ListView)this.findViewById(R.id.MainActivityList);
lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, actions));
onSearchRequested(); //This works...
lv.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent i = null;
Context c = MainActivity.this;
//position is the index of actions above.
switch(position)
{
case 0:
i = new Intent(c,MainCategoryActivity.class);
break;
case 1:
//SearchManager sm = (SearchManager) MainActivity.this.getSystemService(Context.SEARCH_SERVICE);
//sm.startSearch(null, false, new ComponentName(MainActivity.this, MainActivity.class) , null, false);
onSearchRequested(); //NullPointerException
break;
case 2:
i = new Intent(c,SelectCityActivity.class);
break;
case 3:
i = new Intent(c,SavedSearchesActivity.class);
break;
}
c.startActivity(i);
}});
}
我是个白痴。请注意,在onItemCLick处理程序中,如果选择了1,则会调用onSearchRequested,然后断开开关,最后调用c.startActivityi,并且i被初始化为null。这就是空指针的来源。对不起,新手犯的错误。
-James我还尝试创建一个处理程序,并让onclick事件向它传递一条消息以请求搜索对话框,但它也有同样的问题nullpointer。所以你现在得到了它。。。为未来的发展做最好的准备…:
06-28 16:09:22.368: E/AndroidRuntime(1702): FATAL EXCEPTION: main
06-28 16:09:22.368: E/AndroidRuntime(1702): java.lang.NullPointerException
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.app.Activity.startActivityForResult(Activity.java:3190)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.app.Activity.startActivity(Activity.java:3297)
06-28 16:09:22.368: E/AndroidRuntime(1702): at com.TheGreensheet.GreensheetReader.MainActivity$1.onItemClick(MainActivity.java:47)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.widget.AbsListView$1.run(AbsListView.java:3168)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.os.Handler.handleCallback(Handler.java:605)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.os.Handler.dispatchMessage(Handler.java:92)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.os.Looper.loop(Looper.java:137)
06-28 16:09:22.368: E/AndroidRuntime(1702): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-28 16:09:22.368: E/AndroidRuntime(1702): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 16:09:22.368: E/AndroidRuntime(1702): at java.lang.reflect.Method.invoke(Method.java:511)
06-28 16:09:22.368: E/AndroidRuntime(1702): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-28 16:09:22.368: E/AndroidRuntime(1702): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-28 16:09:22.368: E/AndroidRuntime(1702): at dalvik.system.NativeStart.main(Native Method)