Ich versuche, eine Präferenzen Aktivität zu schaffen, aber aus irgendeinem Grund, meine Schaltersteuerung verhält sich nicht die Art, wie es soll. Es verhindert, dass die gewünschten Items kollabieren + meine App stürzt ab, wenn ich zu SettingsActivity navigiere. Ich verstehe wirklich nicht, warum das passiert, wenn die Komponente eindeutig deklariert wurde. Unten ist mein Code (der Code für die Seiten 2 und 3 weggelassen wurden Unordnung in meiner Frage zu reduzieren):Artikel in verschiedenen Aktivitäten kollabiert nicht
activity_page1.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_page1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.apptacularapps.settingsapp.Page1Activity">
<View
android:id="@+id/blue_square"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:background="@drawable/shape_blue_square" />
<View
android:id="@+id/blue_circle"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:background="@drawable/shape_blue_circle"
android:layout_marginBottom="20dp"
android:layout_below="@id/blue_square"/>
<View
android:id="@+id/blue_rectangle"
android:layout_width="300dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:background="@drawable/shape_blue_rectangle"
android:layout_below="@id/blue_circle"/>
</RelativeLayout>
Page1Activity.java
public class Page1Activity extends AppCompatActivity {
boolean squareState;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page1);
}
@Override
public void onResume(){
super.onResume();
loadPreferences();
displaySettings();
}
public void loadPreferences(){
SharedPreferences pref = getSharedPreferences("settings", AppCompatActivity.MODE_PRIVATE);
squareState = pref.getBoolean("square_state", true);
}
public void displaySettings() {
if (squareState) {
findViewById(R.id.blue_square).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.blue_square).setVisibility(View.GONE);
}
}
}
activity_settings.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.packagename.settingsapp.SettingsActivity">
<android.support.v7.widget.SwitchCompat
android:id="@+id/square_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:layout_margin="20dp"
android:text="Show squares"
style="@android:style/TextAppearance.Large" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/circle_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:layout_margin="20dp"
android:text="Show circles"
style="@android:style/TextAppearance.Large"
android:layout_below="@id/square_switch"/>
<android.support.v7.widget.SwitchCompat
android:id="@+id/rectangle_switch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:layout_margin="20dp"
android:text="Show rectangles"
style="@android:style/TextAppearance.Large"
android:layout_below="@id/circle_switch"/>
</RelativeLayout>
SettingsActivity.java
public class SettingsActivity extends AppCompatActivity {
boolean squareState;
SwitchCompat squareSwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
@Override
public void onResume(){
super.onResume();
loadPreferences();
displaySettings();
}
public void loadPreferences(){
SharedPreferences pref = getSharedPreferences("settings", AppCompatActivity.MODE_PRIVATE);
squareState = pref.getBoolean("square_state", true);
}
public void displaySettings(){
squareSwitch.setChecked(squareState);
}
@Override
public void onPause(){
super.onPause();
savePreferences();
}
private void savePreferences(){
SharedPreferences pref = getSharedPreferences("settings", AppCompatActivity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("square_state", squareState);
editor.apply();
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int id = buttonView.getId();
switch(id){
case R.id.square_switch:
squareState = isChecked;
break;
}
}
}
Sie es werfen müssen, drücken Sie Alt + Enter und es wird einen Vorschlag zu werfen es zeigen. aktualisierte auch die Antwort. – Saurabh
aktualisierte Antwort. – Saurabh
Wissen Sie, wie Sie dieses andere Problem lösen können? Ich habe versucht, dies für Monate zu lösen (aufgrund der fehlenden Tutorials): [Link zu anderen Frage] (http://stackoverflow.com/questions/41961805/fragment-item-wont-collapse) – MacaronLover