-1

フラグメントを使用してプロジェクトを作成しています。各フラグメントには独自のツールバーがあります。しかし、フラグメントで AppCompatActivity を使用して setSupportActionBar を使用すると、以下の強制終了の問題に直面しています:

致命的な例外: メイン
プロセス: com.example.admin.prototypedemo、PID: 6090
java.lang.RuntimeException: アクティビティを開始できません ComponentInfo{com.example.admin.prototypedemo/com.example.admin.prototypedemo.activity.TopScreenActivity}: java.lang.ClassCastException: com.example.admin.prototypedemo.activity.TopScreenActivity は
、android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413) で android.support.v7.app.AppCompatActivityにキャストできません。 ActivityThread.handleLaunchActivity(ActivityThread.java:2471) で android.app.ActivityThread.access$900(ActivityThread.java:175)
で android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
で android.os.Handler. dispatchMessage(Handler.java:102)
android.os.Looper.loop(Looper.java:146)
で android.app.ActivityThread.main(ActivityThread.java:5602)
で java.lang.reflect.Method.invokeNative(Native Method)
で 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)
dalvik.system.NativeStart.main(Native Method) で
原因: java.lang.ClassCastException: com.example.admin.prototypedemo.activity.TopScreenActivity は android.support.v7.app.AppCompatActivity にキャストできません
com.example.admin.prototypedemo.fragment.TopScreenFragment.onCreateView(TopScreenFragment.java:50) で android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) で android.support.v4.app.FragmentManagerImpl .moveToState(FragmentManager.java:1067) で android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) で android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) で android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) で android.support.v4.app.FragmentActivity.onStart android.app.ActivityThread.performLaunchActivity
(ActivityThread.java: 2386) android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471) で android.app.ActivityThread.access$900(ActivityThread.java:175) 
で android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) android.os.Handler.dispatchMessage(Handler.java:102) で 
android.os.Looper.loop(Looper.java:146) 
で android.app.ActivityThread.main(ActivityThread.java:5602) 
で java.lang.reflect.Method.invokeNative(Native Method) 
で java.lang.reflect で.Method.invoke(Method.java:515)

以下は私のコードです:

 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup parent, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.top_screen_fragment_activity, parent, false);

        Toolbar toolbar = (Toolbar)view.findViewById(R.id.toolbar);
        toolbar.setTitle("Prototype");
        AppCompatActivity activity = (AppCompatActivity)getActivity();
        activity.setSupportActionBar(toolbar);
        activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        return view;
}

誰でもこの問題を解決するのを手伝ってもらえますか? どうもありがとう!

4

2 に答える 2

0

Toolbar は actionbar に追加されますが、ActionBar は Activity プロパティです。特定のフラグメントのツールバーを所有するアクティビティの ActionBar として設定する場合は、フラグメントを所有するアクティビティを取得し (Fragment.getActivity())、その ActionBar プロパティを設定します。

アプリのアクティビティ内に複数のフラグメントがある場合は、明らかにこれを慎重に管理する必要があります。

2番目の解決策は、アクティビティにインターフェースを実装し、フラグメントクラスから呼び出すことです。

于 2016-03-01T17:11:32.900 に答える
0

Activity は AppCompatActivity を拡張していないようです。アクティビティではなく、サポート ライブラリから AppCompatActivity を拡張するアクティビティを作成します。

于 2016-03-01T16:48:35.803 に答える