在OnCreate方法之外在TextView上设置文本的问题

时间:2019-02-16 16:57:27

标签: java android android-fragments nullpointerexception

我一直在创建一个主要使用片段的应用程序 这是应该的工作方式,在“主页片段”上,我单击一个按钮,将我带到另一个片段以填充信息 在该片段上,当我单击按钮时,将打开一个“对话框片段”,然后选择一个“城市名称”,然后提交,它将关闭该对话框,并在TextView上设置为SetText。

我使用一个接口来调用“城市选择”片段上的方法以设置文本。这是一些代码

EditText的声明

EditText editText_From;

设置查找视图

OnCreate

   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {

        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_trip_date, container, false);

        editText_From = view.findViewById(R.id.editText_From);

        return view;
    }


       public void setSelectedCity(String city)
{

    Log.i("<<269>>", "Setting Text on Edit Text <<269>>:" + city);

   editText_From.setText(city);

}

下面的此方法应该为我的EditText或TextView设置文本

    public void setSelectedCity(String city)
{

    Log.i("<<269>>", "Setting Text on Edit Text <<269>>:" + city);
    selectedCityConfirmed = city;

   editText_From.setText(city);

}

应用程序在EditText上崩溃,并显示以下错误消息,

02-16 19:37:43.928 26582-26582/com.example.bob2609.busticketingapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.bob2609.busticketingapp, PID: 26582
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.support.v4.app.FragmentActivity.findViewById(int)' on a null object reference
        at com.example.bob2609.busticketingapp.TripDateFragment.setSelectedCity(TripDateFragment.java:188)
        at com.example.bob2609.busticketingapp.MainActivity.selectedCity(MainActivity.java:176)
        at com.example.bob2609.busticketingapp.LocationSelector$1.onItemClick(LocationSelector.java:69)
        at android.widget.AdapterView.performItemClick(AdapterView.java:313)
        at android.widget.AbsListView.performItemClick(AbsListView.java:1201)
        at android.widget.AbsListView$PerformClick.run(AbsListView.java:3195)
        at android.widget.AbsListView$3.run(AbsListView.java:4138)
        at android.os.Handler.handleCallback(Handler.java:761)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:156)
        at android.app.ActivityThread.main(ActivityThread.java:6523)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

MainActivity上的接口方法

  @Override
public void selectedCity(String city)
{


    tripDateFragment.setSelectedCity(city);

}

有人知道解决这个问题的方法吗?

**The Image Shows the Path to the Crash, as you can see if i use the bottom navigation to do the same actions it works .. but when i use the alternative it crashes after selection**

1 个答案:

答案 0 :(得分:0)

为什么要在onCreate方法中再次声明Textview?

在onCreate之外声明并在创建时使用“ findViewByID”查找视图。