У меня есть деятельность содержит 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)
Кто-нибудь имеет какие-либо идеи, почему это происходит?
должна быть строка с 'android.content.Context.getPackageName()' в вашем MainActivity. Проверь это. –
Попробуйте как «Intent intent = new Intent (v.getContext(), ContactActivity.class); потому что, как и в журнале,' getActivity() 'возвращает' null' –
#isnotmenow Я думаю, что getPackageName() определяется в классе Context и не должно быть в моей деятельности – MoHaKa