android3.2で問題なく動作するタブレット用のアプリを作成しました。今私はそれをアンドロイド4+で動作させようとしていますが、どういうわけかコードのごく一部が動作していません。私は初心者なので、コードが少し前の例から取られたので、何が機能していないのか理解できません。
クラッシュしているコードの部分は、フィルタリングしたいデータベースからどのフィールドを選択するかを選択するスピナーに基づいて、好きなものを書くことができる単なるテキストボックスです。これは3.2で問題なく動作します(そして、同じコードが、Androidの両方のバージョンの別のフラグメントで使用している他のスピナーでも動作しています)。
まず、logcatを使用します。
11-12 18:33:00.428: E/AndroidRuntime(8140): FATAL EXCEPTION: main
11-12 18:33:00.428: E/AndroidRuntime(8140): java.lang.NullPointerException
11-12 18:33:00.428: E/AndroidRuntime(8140): at dvgvsc.vscdvg.Fragmentsearchlist.ifacesearch(Fragmentsearchlist.java:159)
11-12 18:33:00.428: E/AndroidRuntime(8140): at dvgvsc.vscdvg.Fragmentsearchlist.onPrepareOptionsMenu(Fragmentsearchlist.java:103)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.FragmentManagerImpl.dispatchPrepareOptionsMenu(FragmentManager.java:1865)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.Activity.onPreparePanel(Activity.java:2463)
11-12 18:33:00.428: E/AndroidRuntime(8140): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:438)
11-12 18:33:00.428: E/AndroidRuntime(8140): at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:761)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.Activity.invalidateOptionsMenu(Activity.java:2552)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.FragmentManagerImpl.invalidateOptionsMenu(FragmentManager.java:1914)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.Fragment.setHasOptionsMenu(Fragment.java:898)
11-12 18:33:00.428: E/AndroidRuntime(8140): at dvgvsc.vscdvg.Fragmentsearchlist.onCreateView(Fragmentsearchlist.java:47)
11-12 18:33:00.428: E/AndroidRuntime(8140): at dvgvsc.vscdvg.OrdenesFragment.onCreateView(OrdenesFragment.java:65)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:828)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.BackStackRecord.run(BackStackRecord.java:622)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.os.Handler.handleCallback(Handler.java:605)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.os.Handler.dispatchMessage(Handler.java:92)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.os.Looper.loop(Looper.java:137)
11-12 18:33:00.428: E/AndroidRuntime(8140): at android.app.ActivityThread.main(ActivityThread.java:4514)
11-12 18:33:00.428: E/AndroidRuntime(8140): at java.lang.reflect.Method.invokeNative(Native Method)
11-12 18:33:00.428: E/AndroidRuntime(8140): at java.lang.reflect.Method.invoke(Method.java:511)
11-12 18:33:00.428: E/AndroidRuntime(8140): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
11-12 18:33:00.428: E/AndroidRuntime(8140): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
11-12 18:33:00.428: E/AndroidRuntime(8140): at dalvik.system.NativeStart.main(Native Method)
そして、これがクラッシュしているコードの一部です((Line: text_search.addTextChangedListener(new TextWatcher() { ))
private final void ifacesearch() {
/** search box that is used on the searches, using a listerner which will move the cursor based on the user imput. */
/*EditText text_search = (EditText)getActivity().findViewById(R.id.text_search);
text_search.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable text) {
if (text.length() > 0) {
adapter.changeCursor(vscdvgActivity._db.defcursor(TABLA, SEARCH_FILTER, text.toString()));
}else{
adapter.changeCursor(vscdvgActivity._db.defcursor(TABLA, null, null));
}
}
public void beforeTextChanged(CharSequence text, int start, int before, int count) {
}
public void onTextChanged(CharSequence text, int start, int before, int count) {
}
});*/
/** add to the spinner the db fields /*
/*Spinner spinner_filter = (Spinner)getActivity().findViewById(R.id.spinner_filter);
ArrayAdapter<String> spinner_adapter = new ArrayAdapter<String>(
getActivity(),
android.R.layout.simple_spinner_dropdown_item,
COLUMN_FILTER[1]);
spinner_filter.setAdapter(spinner_adapter);
spinner_filter.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
SEARCH_FILTER = COLUMN_FILTER[0][position];
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});*/
クラッシュする可能性のあるアイデアはありますか?
前もって感謝します。