Доступ к представлению внутри Fragment, которое инициализируется с помощью getFragmentbyTag () - PullRequest
0 голосов
/ 02 февраля 2020

Приложение падает при использовании getFragmentManager().findFragmentByTag("HELLO");. Я хочу сослаться на текстовое представление внутри HelloFragment после получения фрагмента из заднего стека.

MainActivity. java

    HelloFragment helloFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btnLoad = (Button) findViewById(R.id.btn_load);


        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.fragment_container, new HelloFragment(), "HELLO");
        fragmentTransaction.commit();


        btnLoad.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
                fragmentTransaction.add(R.id.fragment_container, new HiFragment(), "Hi");
               fragmentTransaction.addToBackStack("HELLO");
                fragmentTransaction.commit();
            }
        });

        helloFragment = (HelloFragment) getFragmentManager().findFragmentByTag("HELLO");
        helloFragment.textView.setText("aufa");

    }
}

HelloFragment. java

    TextView textView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        /** Inflating the layout for this fragment **/
        View v = inflater.inflate(R.layout.fragment, null);
        textView = v.findViewById(R.id.idhai);
        textView.setText("Hello");
        return v;
    }
}

Короче говоря, я хочу получить доступ к текстовому представлению фрагментов, когда получаю его из стека, используя FindFragmentbyTag ()

Log

Process: com.example.test, PID: 23551
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: java.lang.NullPointerException: Attempt to read from field 'android.widget.TextView com.example.test.HelloFragment.textView' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6823)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
     Caused by: java.lang.NullPointerException: Attempt to read from field 'android.widget.TextView com.example.test.HelloFragment.textView' on a null object reference
        at com.example.test.MainActivity.onCreate(MainActivity.java:37)
        at android.app.Activity.performCreate(Activity.java:7224)
        at android.app.Activity.performCreate(Activity.java:7213)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
...