重复使用Android中的多个活动的视图

时间:2012-03-26 18:19:08

标签: android android-activity multiple-views

我有以下场景:android up,兼容从Android 1.6及以上开始。在ALL活动的底部,我有一组只能启动活动的ToggleButtons。不要问我为什么,这就是请求:)让这些按钮在所有屏幕上做同样的事情,我想这样:

  1. 将布局放在xml文件中,并将其放在我的所有活动布局中
  2. 创建一个扩展Activity的类,并为我的所有按钮分配onClick方法
  3. 选中ToggleButton时,将所有其他按钮设置为=“false”并执行按钮的操作。
  4. 当覆盖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);
        }
    }
    

3 个答案:

答案 0 :(得分: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...
    }
}

答案 1 :(得分: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

答案 2 :(得分:0)

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