@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_create: //run NoteActivity in new note mode
startActivity(new Intent(this, NoteActivity.class));
break;
case R.id.action_theme:
setTheme(R.style.Theme2);
setContentView(R.layout.activity_main);
Intent i = getIntent();
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
// TODO: show settings activity
break;
}
return super.onOptionsItemSelected(item);
}
내 활동의 맨 위에 메뉴 항목이 있습니다. 내가 누르면 그것을 변경 테마를 사용하고 싶습니다. 나는 사용자가 프로그램을 시작한 후에이 작업을 수행하기를 원하며 결국에는 여러 테마를 차례로 순환하는 데 사용됩니다. 지금 당장은 그걸 하나로 일하고 싶습니다. 어떻게해야합니까?onCreate() 이후 프로그래밍 방식으로 테마를 변경하십시오.
내 대답
주요 활동 지금까지 내가 문제를 이해 한대로
SharedPreferences pref;
SharedPreferences.Editor editor;
int check;
int newcheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pref = getApplicationContext().getSharedPreferences("test", Context.MODE_PRIVATE);
check = pref.getInt("x", 0);
if(check == 0){
setTheme(R.style.AppTheme);
}else{
setTheme(R.style.Theme2);
}
setContentView(R.layout.activity_main);
noteActivity = new NoteActivity();
mListNotes = (ListView) findViewById(R.id.main_listview);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_create: //run NoteActivity in new note mode
startActivity(new Intent(this, NoteActivity.class));
break;
case R.id.action_theme:
pref = getApplicationContext().getSharedPreferences("test", Context.MODE_PRIVATE);
editor = pref.edit();
newcheck = pref.getInt("x",0);
if(newcheck == 0) {
newcheck = 1;
}else if(newcheck == 1){
newcheck = 0;
}
editor.clear();//clears the editor to avoid errors
editor.putInt("x",newcheck);//add in new int
editor.commit();//commit
//restart the activity
Intent i = getIntent();
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
finish();//close activity - avoid crash
startActivity(i);//start activity
//TODO show settings activity
break;
}
return super.onOptionsItemSelected(item);
}
그래서 지금 당면하고있는 문제는 무엇입니까? 테마가 올바르게 설정되지 않았습니까? –
버튼을 누르면 테마가 변경되지 않습니다. onCreate() 메서드에서 테스트 했으므로 테마가 제대로 설정되었습니다. – pewpew
왜 '활동'을 다시 시작할까요? 'setTheme' 함수를 사용하면됩니다. –