我目前有一個好奇的問題,試圖同時使用V4和V7(操作欄)兼容性庫。ActionBarActivity和FragmentActivity ...「不可轉換類型」?
比方說,我有我自己的Activity類,一方面擴展了ActionBarActivity,另一方面是一個片段,我稱之爲「(MyActivity)getActivity()」。
我檢查了導入,我的Fragment是一個v4片段。
在v4片段中,調用「getActivity()」會返回一個FragmentActivity。
我也檢查:ActionBarActivity擴展FragmentActivity。
現在,這是我的問題: 我沒有在編輯器(沒有紅線)的任何錯誤。 我正在使用Android Studio。 當我嘗試「製作」項目時,編譯器每次在我的Fragment中調用「getActivity」時都會返回一個錯誤。 它告訴我他有一個FragmentActivity,但預計會有一個ActionBarActivity,並告訴我這些類是不兼容的。 它中斷,我甚至不能測試我的應用程序。
這可能是一個gradle配置的問題,但我在build.gradle文件的「dependencies」部分中添加了「compile」編譯「com.android.support:appcompat-v7:18.0.+」「,因爲說這個頁面上:「http://developer.android.com/tools/support-library/setup.html」,它不會改變任何東西......
任何想法
編輯: 作爲adddition我昨天的帖子,即使一切都說明前,下面是一些代碼部分和Android-Studio給我的錯誤消息:
首先,我的活動:
...
import android.support.v7.app.ActionBarActivity;
...
public abstract class MyAbstractActivity extends ActionBarActivity{
//Do some stuff here
}
我的應用程序的每個活動都擴展了這個類。
現在,這裏是我的片段:
...
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar;
...
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Do some stuff...
((MyAbstractActivity)getActivity()).getSupportActionBar().setTitle(R.string.app_name);
}
//Do some stuff...
}
沒有錯誤在編輯器中顯示。 但是,當我「讓」的項目中,我得到了「事件日誌」此消息:
編譯有5個錯誤,並在4秒
0警告,在已完成的「信息製作」部分,我可以看到這個每次我嘗試投 「getActvity()」 中的 「MyAbstractActivity」 時間:
的java:需要不可逆性類型 :com.myapps.abstracts.MyAbstractActivity 發現:android.support。 v4.app.FragmentActivity
您是否將演員添加到'ActionBarActivity'?你確定你的'Fragment'是'androi.support.v4.app.Fragment'而不是'android.app.Fragment'嗎? – CommonsWare
謝謝關於這個活動,它擴展了ActionBarActivity,並且在我的片段中,我將「getActivity」的結果投到了我的Activity類中,正如我所說的,我檢查了我的Fragment,它確實是一個androi.support。 v4.app.Fragment。 –
感謝編輯sabadow,我不知道如何縮進代碼...對不起... –