2016-03-01 25 views
-1

我正在製作一個帶有片段的項目,每個片段都有自己的工具欄。但是,當我在我的片段setSupportActionBar使用AppCompatActivity,我面對下面強制關閉問題:如何在片段中設置工具欄

致命異常:主要
過程: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.support.v7.app.AppCompatActivity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413) 在 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)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
在java.lang.reflect.Method.invoke(Method.java:515)
在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1283 在com.android.internal.os .ZygoteInit.main(ZygoteInit.java:1099)
在dalvik.system.NativeStart.main(本機方法)
所致:java.lang.ClassCastException: com.example.admin.prototypedemo.activity.TopScreenActivity不能 澆鑄到android.support.v7.app.AppCompatActivity
在 com.example.admin.prototypedemo.fragment.TopScreenFragment.onCreateView(TopScreenFragment.java:50) 在 一個ndroid.support.v4.app.Fragment.performCreateView(Fragment.java:1962) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) at android.support.v4.app。 FragmentManagerImpl.moveToState在 android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)(FragmentManager.java:1248)
在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java :1613) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 在 android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1177) 在android.app.Activity.performStart(Activity.java:5461)
在 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(本機方法)
在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; 
} 

任何人都可以幫助m e解決這個問題? 非常感謝!

+1

您的TopScreenActivity是否擴展了AppCompatActivity? – Talha

+0

我明白了。非常感謝。 –

回答

0

它會出現你的Activity沒有擴展AppCompatActivity。讓您的活動從支持庫而不是活動擴展AppCompatActivity。

+0

我明白了。非常感謝。 –

0

工具欄被添加到操作欄中,而ActionBar是一個Activity屬性。如果要將給定片段中的工具欄設置爲擁有該Activity的ActionBar,則獲取擁有片段(Fragment.getActivity())的Activity並設置其ActionBar屬性。

如果您的應用程序在該活動中包含多個片段,您顯然必須謹慎管理此問題。

第二種解決方案是通過在活動中實現接口並從片段類中調用。