【发布时间】:2013-10-10 18:13:50
【问题描述】:
我目前遇到一个奇怪的问题,尝试同时使用 v4 和 v7(操作栏)兼容性库。
假设我有自己的 Activity 类,它一方面扩展了 ActionBarActivity,另一方面扩展了 Fragment,我在其中调用了“(MyActivity)getActivity()”。
我检查了导入,我的 Fragment 是 v4 Fragment。
在 v4 Fragment 中,调用“getActivity()”会返回一个 FragmentActivity。
我还检查了:ActionBarActivity 扩展了 FragmentActivity。
现在这是我的问题: 我在编辑器中没有任何错误(没有红线)。 我正在使用安卓工作室。 当我尝试“制作”项目时,每次我在 Fragment 中调用“getActivity”时,编译器都会返回一个错误。 它告诉我他有一个 FragmentActivity 但需要一个 ActionBarActivity 并告诉我这些类不兼容。 它中断了,我什至无法测试我的应用程序。
这可能是gradle配置的问题,但我在build.gradle文件的“dependencies”部分添加了“compile”compile“com.android.support:appcompat-v7:18.0.+”,如在这个页面上说:“http://developer.android.com/tools/support-library/setup.html”,它并没有改变任何东西......
有什么想法吗?
编辑: 作为我昨天帖子的补充,即使之前已经解释了一切,这里有一些代码部分和 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...
}
编辑器中没有显示错误。 但是当我“制作”项目时,我在“事件日志”中收到了这条消息:
编译完成,4 秒内出现 5 个错误和 0 个警告
在“消息制作”部分,我每次尝试在“MyAbstractActivity”中投射“getActvity()”时都可以看到:
java:不可转换的类型 必需:com.myapps.abstracts.MyAbstractActivity 找到:android.support.v4.app.FragmentActivity
【问题讨论】:
-
您是否将演员添加到
ActionBarActivity?您确定您的Fragment是androi.support.v4.app.Fragment而不是android.app.Fragment? -
感谢您的回答。关于活动,它扩展了 ActionBarActivity,并且在我的片段中,我将“getActivity”的结果转换为我的 Activity 类。是的,正如我所说,我检查了我的 Fragment,它确实是一个 androi.support.v4.app.Fragment。
-
感谢编辑 sabadow,我不知道如何缩进代码...对不起...
标签: android gradle android-studio