0

I am trying to send the bundle data from the activity class to the fragment class, but I have been getting the NPE error. I've researched a bit on Stackoverflow and tried a few different things, but none seemed to work.

I have another activity class sending the intent to the MainActivity class. So the bundle from the MainActivity.java is definitely not null when it is sent to the MyFragment class.

Please help! Thank you! :D

MainActivity.java

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      requestWindowFeature(Window.FEATURE_NO_TITLE);
      setContentView(R.layout.activity_main);

      Bundle extras = getIntent().getExtras();
      if (extras != null) {
        Bundle bundle = new Bundle();
        String value = extras.getString("TEST36");
        bundle.putString("TEST36", value);
        MyFragment fragInfo = new MyFragment();
        fragInfo.setArguments(bundle);
      }
  }
}

MyFragment.java

public class MyFragment extends Fragment{
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup parent,
        Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.fragment_xml, parent, false);
   }
   @Override
   public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Bundle bundle = getArguments();                                             
    String myMode = bundle.getString("TEST36");
   }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_xml"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="com.example.test.MyFragment"> 
</fragment>

fragment_xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/TESTINGTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="26dp"
        android:layout_marginTop="21dp"
        android:layout_marginBottom="20dp"
        android:textSize="@dimen/text_size" />

</RelativeLayout>

Logcat

07-12 01:01:59.149: E/AndroidRuntime(2950): FATAL EXCEPTION: main
07-12 01:01:59.149: E/AndroidRuntime(2950): Process: com.example.test, PID: 2950
07-12 01:01:59.149: E/AndroidRuntime(2950): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: java.lang.NullPointerException
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.os.Looper.loop(Looper.java:136)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.app.ActivityThread.main(ActivityThread.java:5017)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at java.lang.reflect.Method.invokeNative(Native Method)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at java.lang.reflect.Method.invoke(Method.java:515)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at dalvik.system.NativeStart.main(Native Method)
07-12 01:01:59.149: E/AndroidRuntime(2950): Caused by: java.lang.NullPointerException
07-12 01:01:59.149: E/AndroidRuntime(2950):     at com.example.Fragment.onActivityCreated(MyFragment.java:1098)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:566)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.app.Activity.performStart(Activity.java:5241)
07-12 01:01:59.149: E/AndroidRuntime(2950):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
07-12 01:01:59.149: E/AndroidRuntime(2950):     ... 11 more
Asp Upload
  • 171
  • 1
  • 13

2 Answers2

0

The problem in in the line

MyFragment fragInfo = new MyFragment();

You are creating a new fragment instance, and passing it the data, but that fragment is not part of the UI. Instead you probably want to find the fragment instance in the UI by using

findFragmentById(R.id.my_fragment_id)
yoah
  • 7,180
  • 2
  • 30
  • 30
  • I am fairly new to android. How do you implement it? – Asp Upload Jul 13 '14 at 04:45
  • In you layout xml, where you have the defined give it an id, and when you want to get the fargment in the activity, call findFragmentById. See an example here: http://stackoverflow.com/questions/6750069/get-the-current-fragment-object – yoah Jul 13 '14 at 04:47
0

Add following code after MyFragment fragInfo = new MyFragment();

fragInfo.setArguments(bundle);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.my_fragment_id, fragInfo);
transaction.commit();

try to get the data in onCreateView like

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
       Bundle savedInstanceState)
{
    String myValue = this.getArguments().getString("TEST36");
Ted Hopp
  • 232,168
  • 48
  • 399
  • 521
Madhu
  • 298
  • 1
  • 12
  • Nope, it's still causing the NPE error. 07-13 10:14:34.921: E/AndroidRuntime(1897): Caused by: java.lang.NullPointerException 07-13 10:14:34.921: E/AndroidRuntime(1897): at com.example.test.MyFragment.onCreateView(MyFragment.java:823) – Asp Upload Jul 13 '14 at 14:19