0

我有以下场景:android up,从 android 1.6 及更高版本开始兼容。在所有活动的底部,我有一组仅启动活动的切换按钮。不要问我为什么,这是我的要求 :) 让这些按钮在所有屏幕上做同样的事情,我认为是这样的:

  1. 将布局放在一个 xml 文件中,并将其放在我所有的活动布局中
  2. 创建一个扩展 Activity 的类并为我的所有按钮分配 onClick 方法
  3. 选中 ToggleButton 时,将所有其他按钮设置为 checked="false" 并执行按钮的操作。

覆盖 onCreate() 时,我被困在 BaseActivity 上。如何获取我的按钮并将 onClick 侦听器分配给它们?

public class BaseActivity extends Activity {
    private ToggleButton menuHome;

    @Override
    public void onCreate(Bundle savedInstanceState) {
             //this does not work as it cannot find R.id.menu_home)
        menuHome = (ToggleButton) findViewById(R.id.menu_home);
    }
}
4

3 回答 3

1

在您扩展 BaseActivity 的其他活动中,请查看您的 OnCreate 方法。它看起来像这样吗?

public class YourActivity extends BaseActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        base.Oncreate(saveInstanceState);     

        setContentView(R.layout.YourLayout);

        // Other code here...
    }
}

它与订单有关...您尚未设置内容视图,因此您的切换按钮不存在。试试这个:

public class YourActivity extends BaseActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.YourLayout); // Set your content view first.

        base.Oncreate(saveInstanceState);     



        // Other code here...
    }
}
于 2012-03-26T18:31:25.487 回答
1

您需要使用有效的 xml 文件或通过运行时对象初始化来初始化 GUI。尝试在您的活动上使用 setContentView。您的代码没有加载任何 xml,因此没有初始化 menu_home。

http://developer.android.com/reference/android/app/Activity.html

我不确定这是否是正确的方法,我会考虑做一个外部组件来完成这项工作:http: //developer.android.com/guide/topics/ui/custom-components.html

于 2012-03-26T18:31:56.087 回答
0

您必须调用 setContentView(R.layout.your_layout),其中 your_layout 是包含按钮 R.id.menu_home 的布局。现在您没有为活动提供布局,因此没有层次结构可以在哪里搜索按钮。

于 2012-03-26T18:30:02.963 回答