java Android ActionBar AutoCompleteTextview
我在Actionbar中添加了一个AutoCompleteTextview,方法是将项目添加到菜单文件夹中的xml中,并对其进行膨胀。但我无法为字符串[]设置适配器,因为引用AutoCompleteTextview会导致第35行出现错误
AutoCompleteTextView et=(AutoCompleteTextView)menu.findItem(R.id.search_bar).getActionView().findViewById(R.id.edt);
如何解决这个问题,并使其在我的actionbar中正常工作
菜单>;主要的xml
<item
安卓:id="@+id/action_search"
安卓:orderInCategory="100"
安卓:showAsAction="always"
安卓:actionLayout="@layout/search_bar"/>
搜索栏。xml
<LinearLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:orientation="vertical" >
<AutoCompleteTextView
安卓:id="@+id/edt"
安卓:layout_width="50dp"
安卓:layout_height="wrap_content"/>
</LinearLayout>
主要活动。java
public class MainActivity extends Activity {
String [] products={"candle stick 1","candlestick 3","sglc10","senson","lawn"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00ffff")));
actionBar.setSubtitle("mytest");
actionBar.setTitle("welcome");
// AutoCompleteTextView et=(AutoCompleteTextView)menu.findItem(R.id.search_bar).getActionView().findViewById(R.id.edt);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 安卓.R.layout.simple_dropdown_item_1line, products);
// et.setAdapter(adapter);
return true;
}
Logcat
01-30 01:13:18.309: E/AndroidRuntime(1804): FATAL EXCEPTION: main
01-30 01:13:18.309: E/AndroidRuntime(1804): Process: com.example.action_bar, PID: 1804
01-30 01:13:18.309: E/AndroidRuntime(1804): java.lang.NullPointerException
01-30 01:13:18.309: E/AndroidRuntime(1804): at com.example.action_bar.MainActivity.onCreateOptionsMenu(MainActivity.java:35)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.app.Activity.onCreatePanelMenu(Activity.java:2537)
01-30 01:13:18.309: E/AndroidRuntime(1804): at com.安卓.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:436)
01-30 01:13:18.309: E/AndroidRuntime(1804): at com.安卓.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:800)
01-30 01:13:18.309: E/AndroidRuntime(1804): at com.安卓.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:221)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.view.Choreographer.doCallbacks(Choreographer.java:562)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.view.Choreographer.doFrame(Choreographer.java:531)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.os.Handler.handleCallback(Handler.java:733)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.os.Handler.dispatchMessage(Handler.java:95)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.os.Looper.loop(Looper.java:137)
01-30 01:13:18.309: E/AndroidRuntime(1804): at 安卓.app.ActivityThread.main(ActivityThread.java:4998)
01-30 01:13:18.309: E/AndroidRuntime(1804): at java.lang.reflect.Method.invokeNative(Native Method)
01-30 01:13:18.309: E/AndroidRuntime(1804): at java.lang.reflect.Method.invoke(Method.java:515)
01-30 01:13:18.309: E/AndroidRuntime(1804): at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
01-30 01:13:18.309: E/AndroidRuntime(1804): at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:593)
01-30 01:13:18.309: E/AndroidRuntime(1804): at dalvik.system.NativeStart.main(Native Method)
共 (0) 个答案