Javacadabra
Javacadabra

Reputation: 5768

Trying to pass URL from EditText to Fragment

I am trying to pass a String value "url" to a fragment to display it in a web view. I keep getting the following error:

java.lang.NullPointerException

This is my code:

protected void goToTab1View() {
    if(mTabState != TAB1_STATE){
        mTabState = TAB1_STATE;
        Toast.makeText(getActivity(), "goToTabView1: " + url, Toast.LENGTH_SHORT).show();
        FragmentManager fm = getFragmentManager();
        if(fm!= null){
            //Perform fragment transaction
            FragmentTransaction ft = fm.beginTransaction();
            FragTab1 f = new FragTab1();
            f.setString(url);
            ft.replace(R.id.fragment_content, f);
            ft.commit();
        }
    }
}

I presume I am not attaching the fragment correctly?? I am only new to fragments so I apologize if the question is obvious. Any help would be much appreciated.

STACK TRACE:

 01-11 13:16:06.671: E/AndroidRuntime(23045): FATAL EXCEPTION: main
01-11 13:16:06.671: E/AndroidRuntime(23045): java.lang.NullPointerException
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.widget.Toast.<init>(Toast.java:92)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.widget.Toast.makeText(Toast.java:238)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.example.tabdemo.FragTab1.setString(FragTab1.java:57)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.example.tabdemo.TabFragment.goToTab1View(TabFragment.java:60)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.example.tabdemo.MainActivity$1.onClick(MainActivity.java:34)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.view.View.performClick(View.java:4202)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.view.View$PerformClick.run(View.java:17340)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.os.Handler.handleCallback(Handler.java:725)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.os.Looper.loop(Looper.java:137)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.app.ActivityThread.main(ActivityThread.java:5039)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at java.lang.reflect.Method.invokeNative(Native Method)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at java.lang.reflect.Method.invoke(Method.java:511)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at dalvik.system.NativeStart.main(Native Method)

Upvotes: 0

Views: 160

Answers (1)

TNR
TNR

Reputation: 5869

It looks like you are displaying Toast inside setString() of FragTab1 Fragment. That is why you are facing the NullPointerException.

Remove Toast Display inside setString() of FragTab1 and run the app it will work for you.

Until and unless FragTab1 is attached to Fragment Container, you don't get getActivity() which you are accessing before replacing the FragTab1 Fragment by setting the String as below

f.setString(url);

This will call the FragTab1's setString() where you are showing the Toast which will cause the NullPointerException as it couldn't get the Context.

Upvotes: 1

Related Questions