Что происходит с моим кодом в Android Studio? - PullRequest
0 голосов
/ 26 марта 2020

У меня проблема с приложением в Android Studio. Я начинаю / учусь программировать в java с Android Studio, и у меня есть проблема с моим кодом:

package com.example.licenta23;

import android.app.AppComponentFactory;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AutoCompleteTextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import java.util.ArrayList;
import java.util.List;

public class MainFragment extends Fragment {
private List<MarcaItem> marcaList;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_main, container, false);
    return view;

    fillMarcaList();


    AutoCompleteTextView editText = getView().findViewById(R.id.actv1);
    AutoCompleteMarcaAdapter adapter = new AutoCompleteMarcaAdapter(getActivity(), marcaList);
    editText.setAdapter(adapter);



}

private void fillMarcaList() {
    marcaList = new ArrayList<>();
    marcaList.add(new MarcaItem("Alfa Romeo", R.drawable.alfa_romeo));
    marcaList.add(new MarcaItem("Audi", R.drawable.audi));
    marcaList.add(new MarcaItem("Bmw", R.drawable.bmw));
    marcaList.add(new MarcaItem("Chevrolet", R.drawable.chevrole));
    marcaList.add(new MarcaItem("Citroen", R.drawable.citroen));
    marcaList.add(new MarcaItem("Dacia", R.drawable.dacia));
    marcaList.add(new MarcaItem("Dodge", R.drawable.dodge));
    marcaList.add(new MarcaItem("Fiat", R.drawable.fiat));
    marcaList.add(new MarcaItem("Ford", R.drawable.ford));
    marcaList.add(new MarcaItem("Honda", R.drawable.honda));
    marcaList.add(new MarcaItem("Hyundai", R.drawable.hyundai));
    marcaList.add(new MarcaItem("Jaguar", R.drawable.jaguar));
    marcaList.add(new MarcaItem("Jeep", R.drawable.jeep));
    marcaList.add(new MarcaItem("Kia", R.drawable.kia));
    marcaList.add(new MarcaItem("Land Rover", R.drawable.landrover));
    marcaList.add(new MarcaItem("Lexus", R.drawable.lexus));
    marcaList.add(new MarcaItem("Mazda", R.drawable.mazda));
    marcaList.add(new MarcaItem("Mercedes-Benz", R.drawable.mercedes));
    marcaList.add(new MarcaItem("Mini Cooper", R.drawable.minicooper));
    marcaList.add(new MarcaItem("Mitsubishi", R.drawable.mitsubishi));
    marcaList.add(new MarcaItem("Nissan", R.drawable.nissan));
    marcaList.add(new MarcaItem("Opel", R.drawable.opel));
    marcaList.add(new MarcaItem("Peugeot", R.drawable.peugeot));
    marcaList.add(new MarcaItem("Pontiac", R.drawable.pontiac));
    marcaList.add(new MarcaItem("Porche", R.drawable.porche));
    marcaList.add(new MarcaItem("Renault", R.drawable.renault));
    marcaList.add(new MarcaItem("Rover", R.drawable.rover));
    marcaList.add(new MarcaItem("Seat", R.drawable.seat));
    marcaList.add(new MarcaItem("Skoda", R.drawable.skoda));
    marcaList.add(new MarcaItem("Smart", R.drawable.smart));
    marcaList.add(new MarcaItem("Subaru", R.drawable.subaru));
    marcaList.add(new MarcaItem("Suzuki", R.drawable.suzuki));
    marcaList.add(new MarcaItem("Toyota", R.drawable.toyota));
    marcaList.add(new MarcaItem("Voltwagen", R.drawable.voltwagen));
    marcaList.add(new MarcaItem("Volvo", R.drawable.volvo));

}

}

Ошибка Logcat:

Process: com.example.licenta23, PID: 15232
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.licenta23/com.example.licenta23.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
    at com.example.licenta23.MainFragment.onCreateView(MainFragment.java:29)
    at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
    at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
    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.FragmentController.dispatchActivityCreated(FragmentController.java:246)
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542)
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:201)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1333)
    at android.app.Activity.performStart(Activity.java:6992)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2780)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Я использую последнюю версию Android Studio, как я уже говорил, я изучаю java программирование, надеюсь, вы меня понимаете. Спасибо !!!

Ответы [ 2 ]

2 голосов
/ 26 марта 2020
  • Вы должны добавить Просмотр объекта вместо getView () .

Попробуйте следующим образом

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_main, container, false);

    fillMarcaList();

    AutoCompleteTextView editText = view.findViewById(R.id.actv1);
    AutoCompleteMarcaAdapter adapter = new AutoCompleteMarcaAdapter(getActivity(), marcaList);
    editText.setAdapter(adapter);

    return view;

}
0 голосов
/ 26 марта 2020

Ответ от IntelliJ Amiya верен, и в этом причина ошибки.

Если вы знаете о жизненном цикле фрагмента, вы можете знать, что представление, возвращаемое из onCreateView(), представляет собой пользовательский интерфейс вашего фрагмента, и и от вызова getView() вы хотите получить доступ к этому представлению пользовательского интерфейса, но представление еще не было возвращено из onCreateView() как вы можете получить к нему доступ до этого, и вы вызываете getView() до того, как оно будет возвращено, вот почему вы НПА

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...