Intereting Posts
Перечислите всю музыку в MediaStore с помощью PATHs Кодирование аудио AAC с использованием AudioRecord и MediaCodec на Android Intent.FLAG_ACTIVITY_CLEAR_TOP не удаляет стек активности Android.database.CursorIndexOutOfBoundsException: запрошенный индекс -1 с размером 2 Можно ли сделать эту анимацию для Android с помощью ViewPager? Можно ли запустить андроид только при первом открытии приложения? Как получить размер пользовательского диалога в Android? ScrollView: измените цвет краевого эффекта с помощью Holo Android, как выполнить sql-файл в sqlitedatabase Custom Lint для Java / Android Report, если мы найдем вызов класса без реализации его интерфейса Обновите медиаредактор Android, используя adb Динамический широковещательный приемник в фрагменте Ошибка: выполнение выполнено для задачи ': app: compileDebugKotlin'. > Ошибка компиляции. Подробнее см. Журнал Каков размер размера стека потока пользовательского интерфейса Android и как его преодолеть? Google API обратного поиска изображений

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

Я застрял здесь с проблемой, начинающей работу с кнопки внутри фрагмента. Вот мой код:

ViewPagerAdapter.java

import java.util.List; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class ViewPagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragments; public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) { super(fm); this.fragments = fragments; } @Override public int getCount() { return this.fragments.size(); } @Override public Fragment getItem(int position) { return this.fragments.get(position); } } 

ViewPagerActivity.java

 import java.util.List; import java.util.Vector; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.util.Log; import com.package.here.Class1Overview; import com.package.here.Class1Overview; import com.package.here.Class1Overview; public class ViewPagerActivity extends FragmentActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.viewpager); ViewPager pager = (ViewPager)super.findViewById(R.id.my_viewpager); pager.setAdapter(initialisePaging()); } private ViewPagerAdapter initialisePaging() { List<Fragment> fragments = new Vector<Fragment>(); fragments.add(Fragment.instantiate(this, Class1Overview.class.getName())); fragments.add(Fragment.instantiate(this, Class2Overview.class.getName())); fragments.add(Fragment.instantiate(this, Class3Overview.class.getName())); return new ViewPagerAdapter(super.getSupportFragmentManager(), fragments); } } 

Class1Overview.java (Вот кнопка)

 import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import com.package.here.R; public class FuelOverview extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) { return null; } View v = (LinearLayout)inflater.inflate(R.layout.class_one_layout, container, false); View AddBtn = v.findViewById(R.id.btn_add); ((Button) AddBtn).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(getActivity(), ActivityToStart.class); startActivity(intent); } }); return v; } } 

И это мой LogCat :

 01-05 19:39:00.913: E/AndroidRuntime(10557): Uncaught handler: thread main exiting due to uncaught exception 01-05 19:39:01.034: E/AndroidRuntime(10557): java.lang.RuntimeException: Unable to pause activity {com.package.here/com.package.here.ViewPagerActivity}: java.lang.NullPointerException 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3162) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3119) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3102) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.ActivityThread.access$2400(ActivityThread.java:119) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1870) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.os.Handler.dispatchMessage(Handler.java:99) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.os.Looper.loop(Looper.java:123) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.ActivityThread.main(ActivityThread.java:4363) 01-05 19:39:01.034: E/AndroidRuntime(10557): at java.lang.reflect.Method.invokeNative(Native Method) 01-05 19:39:01.034: E/AndroidRuntime(10557): at java.lang.reflect.Method.invoke(Method.java:521) 01-05 19:39:01.034: E/AndroidRuntime(10557): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-05 19:39:01.034: E/AndroidRuntime(10557): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-05 19:39:01.034: E/AndroidRuntime(10557): at dalvik.system.NativeStart.main(Native Method) 01-05 19:39:01.034: E/AndroidRuntime(10557): Caused by: java.lang.NullPointerException 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.Activity.performSaveInstanceState(Activity.java:1022) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1180) 01-05 19:39:01.034: E/AndroidRuntime(10557): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3144) 01-05 19:39:01.034: E/AndroidRuntime(10557): ... 12 more 01-05 19:39:01.423: I/dalvikvm(10557): threadid=7: reacting to signal 3 

Сам ViewPager работает нормально. Кажется, что ошибка приостанавливает FragmentActivity, но я не могу понять это. Единственное, что я нашел, это сообщение на странице http://code.google.com/p/android/issues/detail?id=19917

Я также получил код примера Google, чтобы убедиться, что в основном использую тот же метод …

Изменить: чтобы убедиться, что ClickListener работает, я попробовал Toast в методе onClick – отлично работает.

Solutions Collecting From Web of "Начальная активность из фрагмента вызывает NullPointerException"

Это известная проблема, и я шокирован, обнаружив, что никто не подал ошибку на публичный трекер ошибок для этого.

Ваша проблема связана с этим:

 if (f.mSavedViewState != null) { if (result == null) { result = new Bundle(); } result.putSparseParcelableArray( FragmentManagerImpl.VIEW_STATE_TAG, f.mSavedViewState); } if (!f.mUserVisibleHint) { // Only add this if it's not the default value result.putBoolean(FragmentManagerImpl.USER_VISIBLE_HINT_TAG, f.mUserVisibleHint); } 

Вы должны заметить, что если result является null входящий в этот код, а первый, if не запущен, вы получите NullPointerException если мы введем второй if .

Он должен гласить:

 if (f.mSavedViewState != null) { if (result == null) { result = new Bundle(); } result.putSparseParcelableArray( FragmentManagerImpl.VIEW_STATE_TAG, f.mSavedViewState); } if (!f.mUserVisibleHint) { if (result == null) { result = new Bundle(); } // Only add this if it's not the default value result.putBoolean(FragmentManagerImpl.USER_VISIBLE_HINT_TAG, f.mUserVisibleHint); } 

Я отправил патч для этой недели или два назад: https://android-review.googlesource.com/31261

Быстрое исправление

 class MyFragment extends Fragment { @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); setUserVisibleHint(true); } 

И ждите обновления в безопасном режиме 🙂

Согласно сообщению здесь , вы должны использовать FragmentStatePagerAdapter, а не FragmentPagerAdapter. У меня была та же проблема, которую вы описали, и чтобы этот переключатель работал для меня.

У меня была такая же проблема – проблема для меня была вызвана, когда я добавил новый фрагмент в мой проект с пустым макетом. Кажется, что если ничто не сохраняется в пакете во время Fragment.onSaveInstanceState(Bundle outState) оно вызывает исключение нулевого указателя в FragmentManagerImpl.saveFragmentBasicState .

Добавление некоторых представлений к моим макетам устранило проблему (после того, как я провел время, ударив головой о стену). Использование библиотеки поддержки android v4 версии 10.

Также при использовании ListView в качестве корня для макета фрагмента, если в списке нет элементов, вы также получите крах. В классе фрагмента переопределите onSaveInstanceState чтобы добавить некоторые данные в пакет:

 @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("DO NOT CRASH", "OK"); }