我目前有一个好奇的问题,试图同时使用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,我不知道如何缩进代码...对不起... –