gpt4 book ai didi

android - 更改语言设置后 Android 应用中的空指针异常

转载 作者:行者123 更新时间:2023-11-30 01:46:15 24 4
gpt4 key购买 nike

我的 Android 应用程序在打开后崩溃并出现空指针异常,转到“设置”并将语言从“英语(美国)”更改为“英语(英国)”,然后返回到应用程序。将语言从英语更改为西类牙语也会导致崩溃。

应用程序因 ViewPager 对象变为空而崩溃。此对象在 Activity 的 onCreate() 方法中创建,并在我的代码中的其他位置访问,但从未更改或重新创建。

我没有对我的应用进行任何本地化,以使其适用于英语(美国)以外的语言。

public class TabMainActivity extends FragmentActivity implements ActionBar.TabListener, OnSharedPreferenceChangeListener
{
ActionBar actionBar;
ActionBar.Tab popsVideoTab, corralStatusTab, reportsTab,currentStatusTab, storeStatusTab, supportTab;
ViewPager viewPager;
TabsPagerAdapter mAdapter;
Context context;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.tabmain);
actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);

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

// Creating ActionBar tabs.
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
actionBar.setSelectedNavigationItem(position);
}

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

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


public int pagerGetCurrentItem()
{
int pagerCurrentItem = viewPager.getCurrentItem();
return pagerCurrentItem;
}

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</android.support.v4.view.ViewPager>
</FrameLayout>

Stack Trace如下。

USER_COMMENT=null
ANDROID_VERSION=4.4.2
APP_VERSION_NAME=4.5.2
BRAND=samsung
PHONE_MODEL=SM-T210R
CUSTOM_DATA=
STACK_TRACE=java.lang.RuntimeException: Unable to start activity ComponentInfo{com.carttronics.storeport/com.carttronics.storeport.TabMainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2458)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4041)
at android.app.ActivityThread.access$1000(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1311)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5598)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.carttronics.storeport.TabMainActivity.pagerGetCurrentItem(TabMainActivity.java:507)
at com.carttronics.storeport.CurrentStatusFragmentTab.onCreate(CurrentStatusFragmentTab.java:95)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1477)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:893)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:1879)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:215)
at com.carttronics.storeport.TabMainActivity.onCreate(TabMainActivity.java:66)
at android.app.Activity.performCreate(Activity.java:5459)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
... 12 more

最佳答案

更改语言后,将调用 Activity 的 OnDestroy 方法,然后调用 onCreate 方法。 onCreate Activity 为我的应用程序创建了一个新的 ViewPager。我的应用程序有几个 fragment ,其中一个在再次重新创建之前调用了 onResume() 并访问了 ViewPager 对象。

我对所有对 ViewPager 的引用进行了空值检查,应用程序不再崩溃。

关于android - 更改语言设置后 Android 应用中的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com