我在Main Activity中放置了一个switch小部件,我还有第二个扩展BroadcastReceiver的活动.我想在第二个活动中获得switch小部件的布尔状态.
如果我输入
Switch s = (Switch) findViewById(R.id.switch1);
它表示对于SecondActivity类型未定义findViewById.问题是Android不允许我在扩展Broadcast Receiver的类中获得switch的值.
我想知道开关的状态,即开关是打开还是关闭,但是在第二次活动中.我怎样才能实现它?
解决方法
从Activity调用findViewById()只能访问作为该Activity布局一部分的Views.您无法使用它来搜索任何其他活动的布局.
根据您的应用程序设计,您可以使用以下方法之一:
1)通过Intent extra将Switch的值发送到SecondActivity
在活动中:
Intent mIntent = new Intent(this,SecondActivity.class); mIntent.putExtra("switch",s.isChecked()); startActivity(mIntent);
在SecondActivity中:
boolean isChecked = getIntent().getBooleanExtra("switch",false);
2)将值保存到更改时的首选项,并在SecondActivity中读取首选项
在活动中:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor e = settings.edit(); e.putBoolean("switch",s.isChecked()); e.commit();
在SecondActivity中:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); boolean isChecked = settings.getBoolean("switch",false);