0

したがって、私のアプリケーションはかなりの数のアクティビティを再利用します。もともと、アクティビティを切り替えたときに、「fromClass」行をインテントに追加するだけでした。ここでの問題は、現在のアクティビティに関する情報を適切に表示するために、いくつかのアクティビティで開始したクラスを知る必要があることです。文字列の配列リストを使用して順序を保存し、逆方向にリストから削除しようとしましたが、文字列をクラス名に変換して正しく動作させることができません。

アクティビティの開始時に、次の方法を追加しています。

Global.appNavigation.add("SecondActivity.class")

onBackPressed() を呼び出すと、次のようになります。

/* Remove Last Object (this class) */
    Globals.appNavigation
            .remove(Globals.appNavigation.size() - 1);
    try {
        Class<?> c = Class.forName(Globals.applicationNavigation
                .get(Globals.appNavigation.size() - 1));
        Activity obj = (Activity) c.newInstance();
        Intent i = new Intent(mActivity, c);
        startActivity(i);
        finish();
    } catch (ClassNotFoundException e) {
        Log.e("Back", "Could not get a class name");
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

私は常に ClassNotFoundException を取得しています。これを行うより良い方法はありますか?私が使用しているこのアプリケーションは非常に大きくなっているため、この場合、アクティビティに finish() を呼び出さないと機能しない可能性があります。

4

1 に答える 1

0

最終的に「finish()」メソッドを呼び出すことになりましたが、永続化する必要があるデータを追跡する方がうまくいきました。

提案をしてくれた Ben Von Handorf に感謝します (元の質問のコメント 1 と 3 を参照してください)。

于 2012-07-31T21:34:22.687 に答える