如何获取另一个活动开关的状态?



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

最新更新