Android RUNTIME:FATAL异常java.lang.NullPointerException

时间:2016-12-31 13:25:29

标签: java android runtime-error

我知道已有关于此主题的解决方案,但我未能成功解决此问题。 我是android的新手,也是这个小组的新手。我试图在onCreateView()方法中实现微调器。我遵循了本教程Android developers
但是当我在AVD中运行这个应用程序时,它会突然停止并关闭应用程序 请帮我解决问题。
这是我的java 代码

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import static android.R.layout.simple_spinner_dropdown_item;
import static android.R.layout.simple_spinner_item;

public class edit_information extends Fragment implements AdapterView.OnItemSelectedListener {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstaceState){
        Spinner spinner = (Spinner) getActivity().findViewById(R.id.spinner1);
        //Creating an array adapter using the string array and a default spinner layout
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getContext(),R.array.hall_type,simple_spinner_item);

        //Layout to choose the dropdown list
        adapter.setDropDownViewResource(simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
        return inflater.inflate(R.layout.edit_information,container,false);
    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(adapterView.getContext(),"Hall Selected: \n"+adapterView.getItemAtPosition(i).toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

这是logcat文件错误

FATAL EXCEPTION: main
Process: com.example.lokesh.eveapp, PID: 18424
java.lang.NullPointerException
   at com.example.lokesh.eveapp.edit_information.onCreateView(edit_information.java:27)
   at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113)
   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
   at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
   at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1643)
   at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:679)
   at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166)
   at android.support.v4.view.ViewPager.populate(ViewPager.java:1272)
   at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:672)
   at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:634)
   at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:615)
   at com.example.lokesh.eveapp.Member_Activity.onTabSelected(Member_Activity.java:81)
   at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1154)
   at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1147)
   at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1117)
   at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1412)
   at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1520)
   at android.view.View$PerformClick.run(View.java:18568)
   at android.os.Handler.handleCallback(Handler.java:733)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:136)
   at android.app.ActivityThread.main(ActivityThread.java:5021)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
   at dalvik.system.NativeStart.main(Native Method)

Logcat在第27行说NullPointerException这是第27行的代码

spinner.setAdapter(adapter);

请帮助。
谢谢

1 个答案:

答案 0 :(得分:1)

你做错了。

问题在于onCreateView方法。您无法使用getActivity()创建View元素。你的微调器是空的,因为它找不到。

所以不要这样:

Spinner spinner = (Spinner) getActivity().findViewById(R.id.spinner1);

使用它:

View view = inflater.inflate(R.layout.edit_information, container, false);
Spinner spinner = (Spinner) view.findViewById(R.id.spinner1);
return view;

祝福和编码愉快。