Tibi Micu
Tibi Micu

Reputation: 23

What happens with my code in Android Studio?

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

Answers (2)

Abhinav Chauhan
Abhinav Chauhan

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

IntelliJ Amiya
IntelliJ Amiya

Reputation: 75788

  • You should add View's object instead of getView().

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

Related Questions