Reputation: 23
I have a problem with my application in Android Studio. I'm starting/learning to program in java with Android Studio and I have a problem with my code:
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 error:
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)
I'm using the latest version of Android Studio, as I said I am learning java programming, I hope you can understand me. Thanks !!!
Upvotes: 0
Views: 91
Reputation: 1384
Answer by IntelliJ Amiya is correct and here is the reason of error.
if you know about the fragment life cycle then you may know that view returned from onCreateView()
is the UI of your fragment and and from calling getView()
you want to access that UI view , but the view has not been return yet from the onCreateView()
how can you access it before that and you're calling getView()
before it is returned, that is why you're getting NPA
Upvotes: 0
Reputation: 75788
Try this way
@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;
}
Upvotes: 2