我有一个名为activity_settings.xml的XML文件,其中有一个Switch
。我有一个名为Start.java的Java类文件(与activity_settings.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();
}
}
});
}
我的activity.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 " />
答案 0 :(得分:0)
在你的交换机类中使用它:
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");
答案 1 :(得分:0)
您无法访问其他活动的View
。因为,它违背了框架的设计方式。此外,您永远无法确定其他活动尚未被销毁(由于内存不足等原因)。
因此,如果您从Start
打开SettingsActivity
活动,则应该这样做:
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");