我有一个名为activity_settings.XML的XML文件,其中有一个Switch
。我有一份名为Start.Java的Java类文件(与activity_seettings.XML无关)。
我想使用Start.java中Switch
的id来了解Switch是否打开/关闭。
是否可以在另一个java类文件中使用另一个布局元素?
这是我的Start.java代码:
protected void onCreate(Bundle protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
aSwitch = (Switch) findViewById(R.id.switchStatus); //set the switch to ON aSwitch.setChecked(true);
//attach a listener to check for changes in state
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Toast.makeText(Start.this, "ONNNNNN", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(Start.this, "OFFFFFF", Toast.LENGTH_LONG).show();
}
}
});
}
我的活动.xml:
<Switch android:id="@+id/mySwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
android:text="Switch " />
在您的交换机类中使用它:
String switchON;
protected void onCreate(Bundle protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
aSwitch = (Switch) findViewById(R.id.switchStatus);
//set the switch to ON aSwitch.setChecked(true);
//attach a listener to check for changes in state
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
switchON = "yes";
Toast.makeText(Start.this, "ONNNNNN", Toast.LENGTH_LONG).show();
} else {
switchON = "no";
Toast.makeText(Start.this, "OFFFFFF", Toast.LENGTH_LONG).show();
}
}
});
}
//Use Intent with your next activity button click
String switchON;
Intent intent = new Intent(SwitchActivity.this, OtherActivity.class){
intent.putExtra("switch_on", switchON);
StartActivity(intent);
}
//use it in your OtherActivity
Intent intent = getIntent();
String switchON = intent.getStringExtra("switch_on");
您不能访问其他"活动"的View
。因为,这与框架的设计方式相悖。此外,您永远无法确定其他"活动"是否尚未被销毁(由于内存不足等原因)。
因此,如果您从SettingsActivity
打开Start
活动,您应该这样做:
Intent intent = new Intent(this, Start.class);
intent.putExtra("switchOn", yourSwitch.isChecked());
startActivity(intent);
然后在Start
活动的onCreate()
中,您可以检查SetingsActivity
的Switch是否已检查:
Intent intent = getIntent();
boolean switchChecked = intent.getBooleanExtra("switchOn");