2016-07-16 2 views
0

У меня есть деятельность содержит ViewPager с фрагментамиНачиная активность из фрагмента вызывает NullPointerException

MainActivity.java:

public class MainActivity extends AppCompatActivity { 
    @BindView(R.id.viewPager) ViewPager viewPager; 
    private ViewPagerAdapter pagerAdapter; 

    private void initView() { 
     pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(pagerAdapter); 
     viewPager.addOnPageChangeListener(pagerAdapter); 
    } 
} 

InfoFragment.Java:

public class InfoFragment extends Fragment implements View.OnClickListener { 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View root = inflater.inflate(R.layout.fragment_info, container, false); 
     ButterKnife.bind(this, root); 
     initView(); 
     return root; 
    } 

    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(getActivity(), ContactActivity.class); 
     intent.putParcelableArrayListExtra(MainActivity.CONTACT_LIST, (ArrayList<? extends Parcelable>) contactList); 
     startActivityForResult(intent, CONTACT_ACTIVITY); 
    } 
} 

При выполнении метода OnClick точно по этой линии:

Intent intent = new Intent(getActivity(), ContactActivity.class); 

Это исключение происходит

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
at android.content.ComponentName.<init>(ComponentName.java:77) 
at android.content.Intent.<init>(Intent.java:4618) 
at com.swazer.smares.ui.fragments.InfoFragment$1.onClick(InfoFragment.java:128) 
at android.view.View.performClick(View.java:5217) 
at android.view.View$PerformClick.run(View.java:20983) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:145) 
at android.app.ActivityThread.main(ActivityThread.java:6117) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

Кто-нибудь имеет какие-либо идеи, почему это происходит?

+0

должна быть строка с 'android.content.Context.getPackageName()' в вашем MainActivity. Проверь это. –

+2

Попробуйте как «Intent intent = new Intent (v.getContext(), ContactActivity.class); потому что, как и в журнале,' getActivity() 'возвращает' null' –

+0

#isnotmenow Я думаю, что getPackageName() определяется в классе Context и не должно быть в моей деятельности – MoHaKa

ответ

0

Попробуйте один из следующего кода:

1) Попробуйте этот код:

Intent i = new Intent(getApplicationContext(), ContactActivity.class); 

2) Добавьте это в ява файлы:

MainActivity.java ..

public static Context cxt; 

public class MainActivity extends AppCompatActivity { 
    cxt = this; 

    @BindView(R.id.viewPager) ViewPager viewPager; 
    private ViewPagerAdapter pagerAdapter; 

    private void initView() { 
     pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     viewPager.setAdapter(pagerAdapter); 
     viewPager.addOnPageChangeListener(pagerAdapter); 
    } 
} 

InfoFragment.java:

@Override 
    public void onClick(View v) { 
     Intent intent = new Intent(MainActivity.cxt, ContactActivity.class); 
     intent.putParcelableArrayListExtra(MainActivity.CONTACT_LIST, (ArrayList<? extends Parcelable>) contactList); 
     startActivityForResult(intent, CONTACT_ACTIVITY); 
    } 
+0

Любой способ getActivity() возвращает null? – MoHaKa

+0

Я думаю, что он возвращает null, потому что вы вызываете этот метод из фрагмента. поэтому он не присваивает значение этому методу. У вас есть контекст, который имеет значение – Saini

+0

- какой-либо из методов работы для вас? – Saini

Смежные вопросы