如何获取另一个Activity的Switch的状态?

时间:2016-07-18 09:36:30

标签: android android-layout android-activity

我有一个名为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 " />

2 个答案:

答案 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");