0

編集:解決しました。問題は tabHost.ClearAllTabs() でした。この関数を呼び出す前に、次のように currentActiveTab を 0 - ゼロに設定する必要がありました: tabHost.setCurrentTab(0);

だから、私にとって解決策は次のとおりでした:

tabHost.setCurrentTab(0);
tabHost.clearAllTabs();

onResume() が呼び出されるたびに clearAllTabs を呼び出さなかった場合、すでに多くのタブを作成していた人に加えて、4 つの新しいタブが作成されました...

編集終了。

アプリケーションに問題があります。これはライブラリ プロジェクトであり、TabActivity を使用します。以下のコードを参照してください。ユーザーはアプリケーションを「一時停止」(onStop()) し、インターネットに接続し、アプリケーションに再入力できるため、すべてのタブ処理は onResume() にあります。

アプリケーションは正常に起動し、戻るボタンを使用して閉じた場合は正常に再起動します。しかし、ユーザーがホームボタンを使用してアクティビティを「一時停止」し、ActivityOne を配置すると、再入力時にエラーが発生します。エラーは、私のコードの最初の tabHost.addTab(spec) (if ステートメントの前) で NULLPOINTEREXCEPTION が原因で発生した「アクティビティを再開できません」です。

Libraryproject = com.tabsactivity.library

このアプリが使用するすべてのレイアウトとクラスは、ライブラリ プロジェクトにあります。

ActivityZero は AndroidManifest.XML で次のように宣言されています

<activity 
    android:name="com.tabsactivity.library.ActivityZero"
    android:windowSoftInputMode="stateHidden">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity
    android:name="com.tabsactivity.library.ActivityOne"
    android:windowSoftInputMode="stateHidden" >
</activity>
...
<activity
    android:name="com.tabsactivity.library.ActivityFour"
    android:windowSoftInputMode="stateHidden" >
</activity>

ActivityZero.class

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    res = getResources();
    appPref =  getSharedPreferences("Prefs", MODE_PRIVATE);
    prefEditor = appPref.edit(); 
    if (getApplicationContext().getPackageName().trim().equals("com.app")) prefEditor.putBoolean("demo", false);
        else prefEditor.putBoolean("demo", true).commit();      
    }
    @Override
    protected void onResume() {
        super.onResume();       
        ConnectivityManager conMgr = ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = conMgr.getActiveNetworkInfo();
        if (ni == null) prefEditor.putBoolean("connected_net", false).commit();
            else prefEditor.putBoolean("connected_net", true).commit();
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);       

        tabHost = getTabHost();
        tabHost.clearAllTabs();

        intent = new Intent().setClass(this, com.tabsactivity.library.ActivityOne.class);               
        spec = tabHost.newTabSpec("One").setIndicator("One", res.getDrawable(R.drawable.ic_tab)).setContent(intent);
        tabHost.addTab(spec);

        if ( (appPref.getBoolean("connected_net", false) && appPref.getBoolean("demo", true)) || !appPref.getBoolean("demo", true)) {
            intent = new Intent().setClass(this, com.tabsactivity.library.ActivityTwo.class);
            spec = tabHost.newTabSpec("Two").setIndicator("Two", res.getDrawable(R.drawable.ic_tab)).setContent(intent);
            tabHost.addTab(spec);

            intent = new Intent().setClass(this, com.tabsactivity.library.ActivityThree.class);
            spec = tabHost.newTabSpec("Three").setIndicator("Three", res.getDrawable(R.drawable.ic_tab)).setContent(intent);
            tabHost.addTab(spec);

            intent = new Intent().setClass(this, com.tabsactivity.library.ActivityFour.class);
            spec = tabHost.newTabSpec("Four").setIndicator("Four", res.getDrawable(R.drawable.ic_tab)).setContent(intent);
            tabHost.addTab(spec);
        }   else {
                Toast.makeText(this, "Please make sure you have a working internetconnection!", Toast.LENGTH_LONG).show();
    }
    tabHost.setCurrentTab(0);
}

エラーログ:

11-13 20:16:36.377: W/dalvikvm(9337): threadid=1: thread exiting with uncaught exception (group=0x400259f8)
11-13 20:16:36.387: E/AndroidRuntime(9337): FATAL EXCEPTION: main
11-13 20:16:36.387: E/AndroidRuntime(9337): java.lang.RuntimeException: Unable to resume activity {com.app/com.tabsactivity.library.ActivityZero}: java.lang.NullPointerException
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3347)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3362)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2162)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.os.Looper.loop(Looper.java:144)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.app.ActivityThread.main(ActivityThread.java:4937)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at java.lang.reflect.Method.invokeNative(Native Method)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at java.lang.reflect.Method.invoke(Method.java:521)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at dalvik.system.NativeStart.main(Native Method)
11-13 20:16:36.387: E/AndroidRuntime(9337): Caused by: java.lang.NullPointerException
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.widget.TabWidget.setCurrentTab(TabWidget.java:339)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.widget.TabWidget.focusCurrentTab(TabWidget.java:363)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.widget.TabHost.setCurrentTab(TabHost.java:320)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.widget.TabHost.addTab(TabHost.java:213)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at com.tabsactivity.library.ActivityZero.onResume(ActivityZero.java:209)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1255)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.app.Activity.performResume(Activity.java:3864)
11-13 20:16:36.387: E/AndroidRuntime(9337):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3337)
11-13 20:16:36.387: E/AndroidRuntime(9337):     ... 10 more
11-13 20:16:36.437: D/dalvikvm(9337): GC_FOR_MALLOC freed 5320 objects / 572584 bytes in 48ms
4

0 に答える 0