物事を簡単にするために、私のアプリはたくさんのカードで構成されています (Google スタイル)。設定で、ユーザーはメイン アクティビティで表示可能なカードを選択できます。私の問題は、ユーザーがどのカードを有効にするかを選択した後、メイン アクティビティを更新する方法がわからないことです。
うまくいけば、この図は私が言おうとしていることを説明しています。
main activity --> (menu button) --> settings (menu item) --> preference fragment (settings screen) --> (user selects which cards are enabled) --> (back button) --> (main activity should reflect the changes)
onResume メソッドを使用して調べ、その中で recreate() を呼び出しました。正しい方向に向かっているかどうかはわかりません。それを追加した後、アプリがクラッシュしました。
メイン アクティビティ.java
public void onCreate(Bundle savedInstanceState) {
//remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// init CardView
mCardView = (CardUI) findViewById(R.id.cardsview);
mCardView.setSwipeable(true);
CardStack freqUsedGroup = new CardStack();
freqUsedGroup.setTitle("Easy Access Cards");
mCardView.addStack(freqUsedGroup);
loadPref();
//Begin UMass Website Card
MyPlayCard umassEduCard = new MyPlayCard("UMass.edu",
"Click this card to access UMass Amherst Website", "#881c1c",
"#CC0000", true, true);
umassEduCard.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.umass.edu/"));
startActivity(intent);
}
});
//end UMass Website Card
if(my_checkbox_preference == true)
{
mCardView.addCard(umassEduCard);
}
mCardView.refresh();
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, SetPreferenceActivity.class);
startActivityForResult(intent, 0);
return true;
}
private void loadPref() {
SharedPreferences mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
my_checkbox_preference = mySharedPreferences.getBoolean("umass_website", false);
}
SettingsFragment.java
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.layout.preferences);
}
}
ありがとうございます。xml などのコードがさらに必要な場合はお知らせください。