0

メソッドを呼び出しました:

protected void ask(){

        Fragment newContent = new QuestionsFragment();
        ((MainActivity) getActivity()).switchContent(newContent, R.string.questions, MenuFragment.questions_id, BottomActionBarMode.QUESTIONS);
}

MainActivity: https://docs.google.com/file/d/0B30eXgoSJlFsczNSdkE5Qnc5eG8/edit?usp=sharing

エラー:

08-21 17:16:28.574: E/AndroidRuntime(26360): 致命的な例外: メイン 08-21 17:16:28.574: E/AndroidRuntime(26360): java.lang.ClassCastException: com.chiv.successteritory.activities. AskLikeQuestionDetailsActivity は com.chiv.successteritory.activities.MainActivity にキャストできません

どうやって電話するの?前もって感謝します

4

2 に答える 2

2

OS がバックグラウンドでアクティビティをガベージ コレクションする可能性があるため、 を起動してMainActivityを起動しても、 がそこにあるAskLikeQuestionDetailsActivityとは限りません。MainActivity

メソッドが呼び出された後にFragmentonを変更する場合は、次のことをお勧めします。MainActivityask()AskLikeQuestionDetailsActivity

で、 startをMainActivity呼び出す代わりに、メソッドを呼び出してオーバーライドし、受け取った結果に応じてを変更します。startActivityAskLikeQuestionDetailsActivitystartActivityForResultonActivityResultFragment

AskLikeQuestionDetailsActivityask()で、 と を呼び出しsetResultて、情報を に送り返すように設定してから、Activity.RESULT_OKを呼び出します(すぐに を終了する必要がある場合)。IntentMainActivityfinish()AskLikeQuestionDetailsActivity Activity

それは明らかですか?それが役に立てば幸い。

于 2013-08-21T15:26:50.907 に答える