【问题标题】:Reusing views on multiple activites in Android在 Android 中重用多个活动的视图
【发布时间】:2012-03-27 02:31:56
【问题描述】:

我有以下情况: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);
    }
}

【问题讨论】:

    标签: android android-activity multiple-views


    【解决方案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...
        }
    }
    

    【讨论】:

      【解决方案2】:

      您需要使用有效的 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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2011-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多