D
deek
Stamm-User
- 395
Page 4 ist ja eine komplett neue Activity. Diese kann nicht auf die Views der anderen (num im Background liegenden) Activity zugreifen. Deswegen knallt es hier.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: this_feature_currently_requires_accessing_site_using_safari
>etwas verwirrend finde ich, dass Android Studio es zulässt, dass ich im Code auf eine id zuweisen kann, auf die nicht zugegriffen werden kann.
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", Context.MODE_MULTI_PROCESS); // Load saved shared file
text = prefs.getString("text", text); // Load saved text
TextView tvMode = getActivity().findViewById(R.id.tv_mode); // Link variable to ID
tvMode.setText(text); // Change text color of left layout
Log.wtf("test","text wurde geladen!");
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity
{
ViewPager vp;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager vp = findViewById(R.id.vp);
SetUpViewPager(vp);
}
public void SetUpViewPager(ViewPager viewpage)
{
MyViewPagerAdapter Adapter = new MyViewPagerAdapter(getSupportFragmentManager());
Adapter.AddPageFragment(new Page_1(), "Page 1");
Adapter.AddPageFragment(new Page_2(), "Page 2");
Adapter.AddPageFragment(new Page_3(), "Page 3");
//viewpage.setOffscreenPageLimit(0);
viewpage.setAdapter(Adapter);
}
public class MyViewPagerAdapter extends FragmentPagerAdapter
{
private List<Fragment> MyFragment = new ArrayList<>();
private List<String> MyPageTitle = new ArrayList<>();
public MyViewPagerAdapter(FragmentManager manager)
{
super(manager);
}
public void AddPageFragment(Fragment Frag, String Title)
{
MyFragment.add(Frag);
MyPageTitle.add(Title);
}
@Override
public Fragment getItem(int i)
{
return MyFragment.get(i);
}
@Nullable
@Override
public CharSequence getPageTitle(int position)
{
return MyPageTitle.get(position);
}
@Override
public int getCount()
{
return 3;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if (id == R.id.action_settings)
{
return true;
}
return super.onOptionsItemSelected(item);
}
}
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
public class Page_3 extends Fragment
{
RadioGroup radioGroup;
final String KEY_SAVED_RADIO_BUTTON_INDEX = "SAVED_RADIO_BUTTON_INDEX";
int vis; // Visibility value received from SharedPreferences
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View PageThree = inflater.inflate(R.layout.page3, container, false);
radioGroup = PageThree.findViewById(R.id.radio_group);
radioGroup.setOnCheckedChangeListener(radioGroupOnCheckedChangeListener);
RadioButton radioButtonA = PageThree.findViewById(R.id.radio_button_A);
RadioButton radioButtonB = PageThree.findViewById(R.id.radio_button_B);
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", Context.MODE_MULTI_PROCESS); // Load saved shared file
int savedRadioIndex = prefs.getInt(KEY_SAVED_RADIO_BUTTON_INDEX, 0);
int visA = prefs.getInt("rbA", vis);
int visB = prefs.getInt("rbB", vis);
radioButtonA.setVisibility(visA);
radioButtonB.setVisibility(visB);
RadioButton savedCheckedRadioButton = (RadioButton) radioGroup.getChildAt(savedRadioIndex);
savedCheckedRadioButton.setChecked(true);
radioButtonA.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
switchToPage2("A");
}
});
radioButtonB.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
switchToPage2("B");
}
});
return PageThree;
}
RadioGroup.OnCheckedChangeListener radioGroupOnCheckedChangeListener =
new RadioGroup.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
RadioButton checkedRadioButton = radioGroup.findViewById(checkedId);
int checkedIndex = radioGroup.indexOfChild(checkedRadioButton);
savePreferences(KEY_SAVED_RADIO_BUTTON_INDEX, checkedIndex);
}
};
public void savePreferences(String key, int value)
{
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", Context.MODE_MULTI_PROCESS); // Create new SharedPreferences instance
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(key, value);
editor.commit();
}
public void switchToPage2(String text)
{
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", Context.MODE_MULTI_PROCESS); // Create new SharedPreferences instance
SharedPreferences.Editor editor = prefs.edit(); // Assign variable to editor function
editor.putString("text", text); // Write selected position (int) inside of editor
editor.apply(); // Save values, close process
TextView tv = getActivity().findViewById(R.id.tv_mode);
tv.setText(text);
ViewPager vp = getActivity().findViewById(R.id.vp);
vp.setCurrentItem(1);
}
}
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.RadioButton;
public class Page_5 extends Fragment
{
boolean state; // Checkbox checked/not checked
String nr;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View PageFive = inflater.inflate(R.layout.page5, container, false);
CheckBox checkBoxA = PageFive.findViewById(R.id.check_box_A);
CheckBox checkBoxB = PageFive.findViewById(R.id.check_box_B);
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", 0);
SharedPreferences.Editor editor = prefs.edit();
loadPreferences(); // Load SharedPreferences
checkBoxA.setChecked(prefs.getBoolean("A", false));
checkBoxB.setChecked(prefs.getBoolean("B", false));
checkBoxA.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (((CheckBox) v).isChecked())
{
RadioButton rba = getActivity().findViewById(R.id.radio_button_A);
rba.setVisibility(View.VISIBLE);
savePreferences("A", true, "rbA", 0);
}
else
{
RadioButton rba = getActivity().findViewById(R.id.radio_button_A);
rba.setVisibility(View.GONE);
savePreferences("A", false, "rbA", 8);
}
}
});
checkBoxB.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (((CheckBox) v).isChecked())
{
RadioButton rbb = getActivity().findViewById(R.id.radio_button_B);
rbb.setVisibility(View.VISIBLE);
savePreferences("B", true, "rbB", 0);
}
else
{
RadioButton rbb = getActivity().findViewById(R.id.radio_button_B);
rbb.setVisibility(View.GONE);
savePreferences("B", false, "rbB", 8);
}
}
});
return PageFive;
}
public void savePreferences(String nr, boolean state, String rbnr, int vis)
{
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", Context.MODE_MULTI_PROCESS);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(nr, state);
editor.putInt(rbnr, vis);
editor.apply();
}
public void loadPreferences()
{
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", Context.MODE_MULTI_PROCESS);
state = prefs.getBoolean("state", state);
nr = prefs.getString("nr", nr);
}
}
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", 0);
SharedPreferences.Editor editor = prefs.edit();
loadPreferences(); // Load SharedPreferences
checkBoxA.setChecked(prefs.getBoolean("A", false));
checkBoxB.setChecked(prefs.getBoolean("B", false));
loadPreferences(); // Load SharedPreferences
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", 0);
checkBoxA.setChecked(prefs.getBoolean("A", false));
checkBoxB.setChecked(prefs.getBoolean("B", false));
to Mountain View, CA on November 7-8, 2018.
added in API level 1
API level
SharedPreferences.Editor
public static interface SharedPreferences.Editor
android.content.SharedPreferences.Editor
Interface used for modifying values in a SharedPreferences object. All changes you make in an editor are batched, and not copied back to the original SharedPreferences until you call commit() or apply()
Summary
Public methods
abstract void apply()
Commit your preferences changes back from this Editor to the SharedPreferences object it is editing.
Public methods
apply
added in API level 9
public abstract void apply ()
Commit your preferences changes back from this Editor to the SharedPreferences object it is editing. This atomically performs the requested modifications, replacing whatever is currently in the SharedPreferences.
Note that when two editors are modifying preferences at the same time, the last one to call apply wins.
Unlike commit(), which writes its preferences out to persistent storage synchronously, apply() commits its changes to the in-memory SharedPreferences immediately but starts an asynchronous commit to disk and you won't be notified of any failures. If another editor on this SharedPreferences does a regular commit() while a apply() is still outstanding, the commit() will block until all async commits are completed as well as the commit itself.
As SharedPreferences instances are singletons within a process, it's safe to replace any instance of commit() with apply() if you were already ignoring the return value.
You don't need to worry about Android component lifecycles and their interaction with apply() writing to disk. The framework makes sure in-flight disk writes from apply() complete before switching states.
public class Modes extends Fragment
{
RadioGroup radioGroup;
final String KEY_SAVED_RADIO_BUTTON_INDEX = "SAVED_RADIO_BUTTON_INDEX";
String key; // Used for Radio Button Index
int value; // Checked Index
int vis; // Visibility value received from SharedPreferences
SharedPreferences prefs; // SharedPreferences global
String mode; // Mode of SharedPreferences
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View modes = inflater.inflate(R.layout.modes, container, false);
radioGroup = modes.findViewById(R.id.radio_group_modes); // Link variable to ID
RadioButton radioButtonA = modes.findViewById(R.id.radio_button_A); // Link variable to ID
RadioButton radioButtonB = modes.findViewById(R.id.radio_button_B); // Link variable to ID
RadioButton radioButtonC = modes.findViewById(R.id.radio_button_C); // Link variable to ID
radioGroup.setOnCheckedChangeListener(radioGroupOnCheckedChangeListener);
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", Context.MODE_PRIVATE); // Load SharedPreferencs global
mode = prefs.getString("mode", "A"); // Load current mode or default mode (A)
int savedRadioIndex = prefs.getInt(KEY_SAVED_RADIO_BUTTON_INDEX, 0); // Load index for radio buttons
int visA = prefs.getInt("rbA", 0); // Load visibility value for A, default value = 0 (VISIBLE)
int visB = prefs.getInt("rbB", 0); // Load visibility value for B, default value = 0 (VISIBLE)
int visC = prefs.getInt("rbC", 0); // Load visibility value for C, default value = 0 (VISIBLE)
radioButtonA.setVisibility(visA); // Set visibility for A
radioButtonB.setVisibility(visB); // Set visibility for B
radioButtonC.setVisibility(visC); // Set visibility for C
RadioButton savedCheckedRadioButton = (RadioButton) radioGroup.getChildAt(savedRadioIndex);
savedCheckedRadioButton.setChecked(true);
radioButtonA.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mode = "A";
savePreferences();
}
});
radioButtonB.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mode = "B";
savePreferences();
}
});
radioButtonC.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mode = "C";
savePreferences();
}
});
return modes;
}
RadioGroup.OnCheckedChangeListener radioGroupOnCheckedChangeListener =
new RadioGroup.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
RadioButton checkedRadioButton = radioGroup.findViewById(checkedId);
int checkedIndex = radioGroup.indexOfChild(checkedRadioButton);
key = KEY_SAVED_RADIO_BUTTON_INDEX;
value = checkedIndex;
savePreferences();
}
};
public void savePreferences()
{
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE); // Create new SharedPreferences instance
SharedPreferences.Editor editor = prefs.edit(); // Editor variable for SharedPreferences
editor.putString("mode", mode); // Write selected position (int) inside of editor
editor.putInt(key, value); // Status of specific radio button
editor.apply(); // Save + close instance
Intent intent = new Intent(getActivity(), TriggerOnResume.class); // Create intent for running TriggerOnResumeActivity
getActivity().startActivity(intent); // Run TriggerOnResumeActivity
ViewPager vp = getActivity().findViewById(R.id.vp); // Link to ViewPager
vp.setCurrentItem(1); // Switch to page 2
}
}
public class Modes extends Fragment
{
RadioGroup radioGroup;
RadioButton radioButtonA, radioButtonB, radioButtonC; // Mode RadioButtons
final String KEY_SAVED_RADIO_BUTTON_INDEX = "SAVED_RADIO_BUTTON_INDEX";
String key; // Used for Radio Button Index
int value; // Checked Index
int checkedIndex;
int savedRadioIndex;
String mode;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
View modes = inflater.inflate(R.layout.modes, container, false); // Link view and layout
radioGroup = modes.findViewById(R.id.radio_group_modes);
RadioButton radioButtonA = modes.findViewById(R.id.radio_button_A); // Link variable to ID:
RadioButton radioButtonB = modes.findViewById(R.id.radio_button_B); // Link variable to ID:
RadioButton radioButtonC = modes.findViewById(R.id.radio_button_C); // Link variable to ID:
loadPreferences();
radioGroup.setOnCheckedChangeListener(radioGroupOnCheckedChangeListener);
RadioButton savedCheckedRadioButton = (RadioButton) radioGroup.getChildAt(savedRadioIndex);
savedCheckedRadioButton.setChecked(true);
radioButtonA.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mode = "A";
savePreferences();
}
});
radioButtonB.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mode = "B";
savePreferences();
}
});
radioButtonC.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mode = "C";
savePreferences();
}
});
return modes;
}
RadioGroup.OnCheckedChangeListener radioGroupOnCheckedChangeListener =
new RadioGroup.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
RadioButton checkedRadioButton = radioGroup.findViewById(checkedId);
checkedIndex = radioGroup.indexOfChild(checkedRadioButton);
key = KEY_SAVED_RADIO_BUTTON_INDEX;
value = checkedIndex;
savePreferences();
}
};
public void savePreferences()
{
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE); // Create new SharedPreferences instance
SharedPreferences.Editor editor = prefs.edit(); // Editor variable for SharedPreferences
editor.putString("mode", mode); // Write selected position (int) inside of editor
editor.putInt(key, value);
editor.apply(); // Save + close instance
Intent intent = new Intent(getActivity(), TriggerOnResume.class); // Create intent for running TriggerOnResumeActivity
getActivity().startActivity(intent); // Run TriggerOnResumeActivity
ViewPager vp = getActivity().findViewById(R.id.vp); // Link to ViewPager
vp.setCurrentItem(1); // Switch to page 2
}
public void loadPreferences()
{
SharedPreferences prefs = getActivity().getSharedPreferences("MY_SHARED_PREF", Context.MODE_PRIVATE); // Load saved shared file
savedRadioIndex = prefs.getInt(KEY_SAVED_RADIO_BUTTON_INDEX, 0);
mode = prefs.getString("mode", "A"); // Default value mode A
int visA = prefs.getInt("rbA", 0); // Default value 0 (visible)
int visB = prefs.getInt("rbB", 0); // Default value 0 (visible)
int visC = prefs.getInt("rbC", 0); // Default value 0 (visible)
radioButtonA.setVisibility(visA); // Set visibility for A
radioButtonB.setVisibility(visB); // Set visibility for B
radioButtonC.setVisibility(visC); // Set visibility for C
}
}
radioButtonA.setVisibility(visA); // Set visibility for A
radioButtonB.setVisibility(visB); // Set visibility for B
radioButtonC.setVisibility(visC); // Set visibility for C
radioButtonA = modes.findViewById(R.id.radio_button_A); // Link variable to ID:
radioButtonB = modes.findViewById(R.id.radio_button_B); // Link variable to ID:
radioButtonC = modes.findViewById(R.id.radio_button_C); // Link variable to ID: