AutoCompleteTextView NullPointerException

问题描述 投票:1回答:1

我正在尝试使用AutoCompleteTextView,但是当我打开应该在表中显示使用者的片段时,我的应用程序崩溃了。

这是我的数据库帮助代码:

public String[] readingconsumerlist() {
    try {
        String consumer[] = null;
        SQLiteDatabase db = this.getReadableDatabase();

        String query = "select name from Consumer";
        Cursor cursor = db.rawQuery(query, null);

        if (cursor != null) {
            if (cursor.moveToFirst()) {
                consumer = new String[cursor.getCount()];

                int i = 0;
                do {
                    consumer[i]=cursor.getString(0);
                    i++;
                } while (cursor.moveToNext());
            }
        }
        cursor.close();
        return consumer;
    }
    catch (Exception e) {
        e.getMessage();
        return null;
    }
}

这是代码在片段中:

public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    homeViewModel = ViewModelProviders.of(this).get(HomeViewModel.class);
    View root = inflater.inflate(R.layout.fragment_home, container, false);

    db = new DatabaseHelper(getActivity());
    final String[] myconsumer = db.readingconsumerlist();

    autoCompleteTextViewconsumername = getActivity().findViewById(R.id.consumer_name);
    ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_dropdown_item_1line, myconsumer);
    autoCompleteTextViewconsumername.setAdapter(adapter);

    return root;
}

我不知道这是否是堆栈跟踪,我是新手。我正在尝试将近2天的时间来修复此错误,但我没有做任何工作

Process: com.vicjames.finalmeterreader, PID: 11657
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vicjames.finalmeterreader/com.vicjames.finalmeterreader.MainActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2988)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3066)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:202)
        at android.app.ActivityThread.main(ActivityThread.java:6962)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888)
     Caused by: java.lang.NullPointerException
        at java.util.Objects.requireNonNull(Objects.java:203)
        at java.util.Arrays$ArrayList.<init>(Arrays.java:3741)
        at java.util.Arrays.asList(Arrays.java:3728)
        at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:163)
        at com.vicjames.finalmeterreader.ui.home.HomeFragment.onCreateView(HomeFragment.java:58)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
        at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManagerImpl.java:2100)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1874)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1830)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2663)
        at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613)
        at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2624)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:904)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2659)
        at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613)
        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:246)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542)
        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1334)
        at android.app.Activity.performStart(Activity.java:7247)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2951)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3066) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:202) 
        at android.app.ActivityThread.main(ActivityThread.java:6962) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888) 
java android android-sqlite autocompletetextview
1个回答
1
投票

您应该通过这种方式获取片段的小部件:

public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.fragment_home, container, false) ;

    autoCompleteTextViewconsumername =root.findViewById(R.id.consumer_name);
    .
    .
    .
    return root;

}

© www.soinside.com 2019 - 2024. All rights reserved.