Calling Fragment Method by Parent FragmentActivity, getting NullPointerException

user1870060

I want to to call some Fragment's method from FragmentActivity. But as result I alsways get NPE. What do I do wrong? Here is my source code.

FragmentActivity:

    public class FragmentMenuActivity extends FragmentActivity implements
ActionBar.TabListener {

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Settings", "Image", "Text"};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_fragment_menu);

viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

viewPager.setAdapter(mAdapter);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);       

// Adding Tabs
for (String tab_name : tabs) {
    actionBar.addTab(actionBar.newTab().setText(tab_name)
            .setTabListener(this));
}


viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageSelected(int position) {
        // on changing the page
        // make respected tab selected
        actionBar.setSelectedNavigationItem(position);
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
    }
});

TabText myTab= (TabText)mAdapter.getItem(2);
if (myTab!=null)
{   myTab.Test();

}
else
{
    Toast.makeText(getApplicationContext(), "null", Toast.LENGTH_LONG).show();
}
}

....
}

Fragment Code:

 public class TabText extends Fragment {


    public TabText()
    {

    }
    public void Test()
    {
        Toast.makeText(getActivity(), "TabText", Toast.LENGTH_LONG).show();
    }

       @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

        }
}

TabPagerAdapter Code:

    public class TabsPagerAdapter extends FragmentPagerAdapter {

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:
            // Top Rated fragment activity
            return new TabSettings();
        case 1:
            // Games fragment activity
            return new  TabImage();
        case 2:
            // Movies fragment activity
            return new TabText();
        }

        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 3;
    }

}

As result I always get NPE:

07-13 19:08:23.367: E/AndroidRuntime(529): FATAL EXCEPTION: main
07-13 19:08:23.367: E/AndroidRuntime(529): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fragmentmenu/com.example.fragmentmenu.FragmentMenuActivity}: java.lang.NullPointerException
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.os.Looper.loop(Looper.java:137)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.app.ActivityThread.main(ActivityThread.java:4424)
07-13 19:08:23.367: E/AndroidRuntime(529):  at java.lang.reflect.Method.invokeNative(Native Method)
07-13 19:08:23.367: E/AndroidRuntime(529):  at java.lang.reflect.Method.invoke(Method.java:511)
07-13 19:08:23.367: E/AndroidRuntime(529):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-13 19:08:23.367: E/AndroidRuntime(529):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-13 19:08:23.367: E/AndroidRuntime(529):  at dalvik.system.NativeStart.main(Native Method)
07-13 19:08:23.367: E/AndroidRuntime(529): Caused by: java.lang.NullPointerException
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.widget.Toast.<init>(Toast.java:92)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.widget.Toast.makeText(Toast.java:233)
07-13 19:08:23.367: E/AndroidRuntime(529):  at com.example.fragmentmenu.TabText.Test(TabText.java:16)
07-13 19:08:23.367: E/AndroidRuntime(529):  at com.example.fragmentmenu.FragmentMenuActivity.onCreate(FragmentMenuActivity.java:64)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.app.Activity.performCreate(Activity.java:4465)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
07-13 19:08:23.367: E/AndroidRuntime(529):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
07-13 19:08:23.367: E/AndroidRuntime(529):  ... 11 more
wvdz

One solution could be add a context param to TabText.test() method:

public void test(Context context)
{
    Toast.makeText(context, "TabText", Toast.LENGTH_LONG).show();
}

However, the getActivity() on TabText you currently use should normally work, but it will return null if the fragment is detached from the activity.

So a better solution would be to make sure that it is not detached from the activity.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

ViewPager NullPointerException while modifying FragmentActivity in Fragment

From Dev

Calling fragment method from activity

From Dev

Getting a Java.Lang.NullPointerException in Android Fragment

From Dev

(LibGDX) - getting NullPointerException when calling my character's render method

From Dev

NullPointerException in calling a Method in java

From Dev

getSharedPreferences return nullpointerexception on fragment method

From Dev

getting nullPointerException when trying to call fragment method in my Activity?

From Dev

calling parent activity method from fragment

From Dev

Calling method from Fragment in ViewPager

From Dev

NullPointerException: Calling setAdapter in Fragment Class

From Dev

NullPointerException on calling getter method

From Dev

Getting java.lang.NullPointerException while calling activate method on TaskClient

From Dev

Calling Fragment interface method in parent Activity onBackPressed method

From Dev

(Android) how to call method in fragment from fragmentActivity

From Dev

How to call a fragment layout from the FragmentActivity to avoid NullPointerException

From Dev

Implemented method getting NullPointerException

From Dev

Android ViewPager NullPointerException by calling a method

From Dev

NullPointerException on calling Activity from FragmentActivity

From Dev

Updating parent Fragment from DialogFragment raises NullPointerException

From Dev

calling parent activity method from fragment

From Dev

Getting Context from a fragment - NullPointerException?

From Dev

NullPointerException when calling a Fragment method from Activity?

From Dev

NullPointerException when calling mocked method

From Dev

Calling parent method in typescript

From Dev

Calling Fragment interface method in parent Activity onBackPressed method

From Dev

NullPointerException when calling EJB method

From Dev

NullPointerException when calling Redis method

From Dev

Calling parent method

From Dev

Calling a Fragment method from a singleton

Related Related

  1. 1

    ViewPager NullPointerException while modifying FragmentActivity in Fragment

  2. 2

    Calling fragment method from activity

  3. 3

    Getting a Java.Lang.NullPointerException in Android Fragment

  4. 4

    (LibGDX) - getting NullPointerException when calling my character's render method

  5. 5

    NullPointerException in calling a Method in java

  6. 6

    getSharedPreferences return nullpointerexception on fragment method

  7. 7

    getting nullPointerException when trying to call fragment method in my Activity?

  8. 8

    calling parent activity method from fragment

  9. 9

    Calling method from Fragment in ViewPager

  10. 10

    NullPointerException: Calling setAdapter in Fragment Class

  11. 11

    NullPointerException on calling getter method

  12. 12

    Getting java.lang.NullPointerException while calling activate method on TaskClient

  13. 13

    Calling Fragment interface method in parent Activity onBackPressed method

  14. 14

    (Android) how to call method in fragment from fragmentActivity

  15. 15

    How to call a fragment layout from the FragmentActivity to avoid NullPointerException

  16. 16

    Implemented method getting NullPointerException

  17. 17

    Android ViewPager NullPointerException by calling a method

  18. 18

    NullPointerException on calling Activity from FragmentActivity

  19. 19

    Updating parent Fragment from DialogFragment raises NullPointerException

  20. 20

    calling parent activity method from fragment

  21. 21

    Getting Context from a fragment - NullPointerException?

  22. 22

    NullPointerException when calling a Fragment method from Activity?

  23. 23

    NullPointerException when calling mocked method

  24. 24

    Calling parent method in typescript

  25. 25

    Calling Fragment interface method in parent Activity onBackPressed method

  26. 26

    NullPointerException when calling EJB method

  27. 27

    NullPointerException when calling Redis method

  28. 28

    Calling parent method

  29. 29

    Calling a Fragment method from a singleton

HotTag

Archive