【问题标题】:ActionBarActivity and FragmentActivity... "Inconvertible types"?ActionBarActivity 和 FragmentActivity...“不可转换的类型”?
【发布时间】: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?您确定您的Fragmentandroi.support.v4.app.Fragment 而不是android.app.Fragment
  • 感谢您的回答。关于活动,它扩展了 ActionBarActivity,并且在我的片段中,我将“getActivity”的结果转换为我的 Activity 类。是的,正如我所说,我检查了我的 Fragment,它确实是一个 androi.support.v4.app.Fragment。
  • 感谢编辑 sabadow,我不知道如何缩进代码...对不起...

标签: android gradle android-studio


【解决方案1】:

好吧,我很难过,但我终于下载了 Eclipse,导入了我的项目,并使用 Eclipse 的错误消息解决了我的问题。 它告诉我“修复项目属性”,我点击了,它在他身边做了一切,我尝试启动应用程序,它工作。 现在问题已经解决了,当我回到 Android Studio 时,它也可以工作了……但是,目前,我想我会留在 Eclipse 中……浪费了太多时间。 :(

【讨论】:

  • 我的解决方法是暂时放弃 Android Studio... :-(
  • 糟糕透了。我也有类似的问题。似乎无法弄清楚。
【解决方案2】:

Android Eclipse 插件变得不稳定。尝试清理您的项目,然后重建。另外,尝试重新启动 Eclipse。还要验证您的项目构建路径库顺序。另外,尝试使用 'ant clean; 从项目中的命令行进行重建; ant debug',但在 Eclipse 关闭时执行。

【讨论】:

  • 我使用的是 Android Studio,这对我没有帮助,很遗憾......但是谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 2020-02-22
相关资源
最近更新 更多