0

私はアンドロイドが初めてで、そのボタンをクリックするとポップアップメニューが表示されます。
昼と夜の2品あります。
夜のボタンを押すと、アクティビティのテーマ全体が黒、テキストの色が白に変わり、昼のボタンを押すと、白、テキストの色が黒に変わります。
コードはありますが、ポップアップ メニューのみが変更されます。
アクティビティのテーマを変更するにはどうすればよいですか。

私のコード:

first class

btn_mode = (Button) findViewById(R.id.btn_content_mode);
        btn_mode.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                System.out.println("bfr calling popup class");
                PopupMenu_Mode popup_mode=new PopupMenu_Mode(context, btn_mode);
                popup_mode. Popup_Menu();
                //call_popupMode();

            }
        });



second class

public class PopupMenu_Mode extends Activity {
    PopupMenu popup_Mode;
    Context context;
    Button b;
    Activity activity;

    public PopupMenu_Mode(Context context, Button btn_mode) {
        // TODO Auto-generated constructor stub

        this.b = btn_mode;
        this.context = context;
    }

    public void Popup_Menu() {
        // TODO Auto-generated constructor stub

        System.out.println("inside popup mode class");
        popup_Mode = new PopupMenu(context, b);
        popup_Mode.getMenuInflater().inflate(R.menu.mode, popup_Mode.getMenu());
        System.out.println("show popup mode ");
        popup_Mode.show();
        popup_Mode.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // TODO Auto-generated method stub
                try {
                    switch (item.getItemId()) {
                    case R.id.day:

                        context.setTheme(R.style.AppThemeLight);
                        // l.setBackgroundColor(R.style.AppThemeDark);
                        break;
                    case R.id.night:
                        context.setTheme(R.style.AppThemeDark);
                    default:
                        break;
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                    Toast.makeText(getApplicationContext(), "nothing",
                            Toast.LENGTH_LONG).show();
                }

                return false;

            }
        });

    }

}

style.xml

<style name="AppThemeLight" parent="android:Theme.Holo.Light">
    <item name="android:background">@color/white</item>
    <item name="android:textColor">#000000</item>
</style>
<style name="AppThemeDark" parent="android:Theme.Holo">
    <item name="android:background">@color/black</item>
    <item name="android:textColor">#FFFFFF</item>
</style>  
4

2 に答える 2

0

onCreate() でアクティビティのテーマを変更できます。

setTheme(android.R.style.Theme);

「onCreate()」および「setContentView()」メソッドを呼び出す前に、テーマを設定する必要があります。

于 2013-11-12T06:17:28.447 に答える
0

サブラマニアンが言ったように、プログラムでテーマを変更できます。ただし、以前に説明したように、このリンクhttps://code.google.com/p/android/issues/detail?id=4394を参照してください。

super.onCreate()&メソッドの前に setTheme メソッドを呼び出す必要がありますsetContentView()

于 2013-11-12T06:30:59.447 に答える