Switchを使用して別のActivityのViewの表示/非表示をさせたい
トグルSwitchを使用して、別のActivityのViewの表示/非表示をさせたいと思っておりますが、
私のコードですと、Switchを操作するとアプリが落ちてしまいます。
言い換えますと
activity_Sub.xmlのSwitchでactivity_main.xmlのViewの表示/非表示をさせたい。
(同じActivity上の表示/非表示は問題なくできます。)
恐らくすごく初歩的なことを聞いているのだと思いますが
どこがおかしいか教えて頂きたく宜しくお願いします。
該当するソースコード
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonClick"
android:text="@string/bt_Next"/>
<View
android:id="@+id/view1"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:layout_x="0dp"
android:layout_y="0dp"
android:alpha="0.7"
android:background="#A1A9BA"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
//private View view1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//view1 = (View) findViewById(R.id.view1);
//view1.setEnabled(false);
//view1.setClickable(false);
}
// [次の画面を表示]ボタンがタップされたときの処理。
public void onButtonClick(View view){
// インテントオブジェクトを用意。
Intent intent = new Intent(MainActivity.this, SubActivity.class);
// アクティビティを起動。
startActivity(intent);
}
}
activity_Sub.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btPrevious"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonClick"
android:text="@string/bt_previous"/>
<Switch
android:id="@+id/switchTouchDisable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Viewの表示非表示" />
<View
android:id="@+id/view2"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:layout_x="0dp"
android:layout_y="0dp"
android:alpha="0.7"
android:background="#A1A9BA"/>
</LinearLayout>
SubActivity.java
public class SubActivity extends AppCompatActivity {
private View view1;
private View view2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
// スイッチのインスタンスを作成
Switch toggleSwich = findViewById(R.id.switchTouchDisable);
toggleSwich.setOnCheckedChangeListener(new onCheckedChangeListener());
view1 = (View) findViewById(R.id.view1);
view2 = (View) findViewById(R.id.view2);
}
// [前の画面を表示]ボタンがタップされたときの処理。
public void onButtonClick(View view){
//このアクティビティの終了。
finish();
}
// トグルスイッチをON/OFFのボタンを押した時に処理するクラス。
public class onCheckedChangeListener implements CompoundButton.OnCheckedChangeListener {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Log.d("SubActivity", "ON");
view1.setVisibility(View.VISIBLE);
view2.setVisibility(View.VISIBLE);
} else {
Log.d("SubActivity", "OFF");
view1.setVisibility(View.GONE);
view2.setVisibility(View.GONE);
}
}
}
}
strings.xml
<resources>
<string name="app_name">IntentSampleSwitch</string>
<string name="bt_Next">次の画面を表示</string>
<string name="bt_previous">前の画面を表示</string>
</resources>