【发布时间】:2016-01-15 15:20:03
【问题描述】:
当我添加一个只支持扩展 ActivityFragment 类的类的投射按钮时,我发现这很困难,因为我感兴趣的特定类已经扩展了另一个 LinearLayout 类。为了避免创建自定义按钮,我做了以下解决方法,
public class metaView extends LinearLayout {
private FragmentActivity fragmentActivity;
private void initViews() {
fragmentActivity = new FragmentActivity(){
@Override
protected void onCreate(Bundle savedInstanceState){
//Create Button Discovery...
}
};
}
}
但是,似乎从未调用过覆盖的方法 onCreate。有没有人看到这个替代方案的问题?或者这根本行不通?
提前致谢!
【问题讨论】:
-
我不熟悉 Android 生命周期,但它可能与调用方法的事件顺序有关。例如,如果在调用 initViews() 之前访问了 fragmentActivity 变量,那么该对象还没有被创建,因此不会定义被覆盖的方法。你试过调试这个吗?
-
好吧,从技术上讲,我不知道如何访问 fragmentActivity 或调用 onCreate() 的方法。但是,是的,如果之前访问过它,我会期待一个空引用 ex。什么应该调用 onCreate()?
-
如果您从未在任何地方使用 FragmentActivity,那您为什么要创建一个?我对你真正想要做什么感到困惑。
-
查看:stackoverflow.com/questions/7475356/…。手动实例化对象时显然不会调用 onCreate。
-
好吧,听起来您实际上需要在 FragmentActivity 中显示您的内容,并在其中使用 LinearLayout 来实际放置内容。您在代码中所做的事情没有多大意义。您通常不会从布局构建活动。为什么不能只在用于实际显示内容的 Activity 中设置回调?
标签: java android inheritance multiple-inheritance chromecast