Чистый класс сборщика диалогов для использования во всех других действиях [Android] - PullRequest
0 голосов
/ 25 июля 2011

Я пытаюсь найти хороший метод для обработки диалогов в одном классе, чтобы я мог использовать их в любой деятельности, которую захочу.Самый чистый и хороший метод производительности будет лучшим.В настоящее время я веду диалоги в каждом упражнении, где выполняется основная работа.Если мне нужно изменить диалоговое окно или диалоговое окно, это затруднит поиск во всех моих классах.

[решено] ~ Обновление с кодом ниже.

Отлично выглядит.Надеюсь, у меня все хорошо.Любая оптимизация?

--- Код из диалогового класса

public class Dialogs extends Activity {
    public static final int DIALOG_START = 0;
    public static final int DIALOG_END = 1;

    private Context mContext;
    private int mDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = getApplicationContext();
        mDialog = getIntent().getExtras().getInt("dialog");
        showDialog(mDialog);
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        Dialog dialog = null;
        switch (id) {
        case DIALOG_START:
            Toast.makeText(mContext, "Test...", Toast.LENGTH_SHORT).show();
            finish(); //works because toasts are somehow delayed
            break;
        case DIALOG_END:
            // do something else but always finish(), e.g. after dialogbutton- click.
            break;
        }
        return dialog;
    }

}

--- Код в целевой операции (например, нажатие кнопки):

Intent dialogIntent = new Intent();
dialogIntent.setClass(Main.this, Dialogs.class);
dialogIntent.putExtra("dialog" , Dialogs.DIALOG_START);
startActivityForResult(dialogIntent, 0x0);

--- Код в манифесте:

<activity android:name=".Dialogs" android:label="@string/app_name"
    android:configChanges="orientation|keyboardHidden"
    android:theme="@style/dialog" />

--- Код в стилевом файле (values ​​/ style.xml):

<style name="dialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

1 Ответ

1 голос
/ 25 июля 2011

Вы должны создать одно действие, тема которого установлена ​​как @android:style/Theme.Dialog в Android-manifest.xml.Затем вы можете использовать его в качестве диалогового окна (или всплывающего окна) в любом месте, просто как мы используем действия, которые startActivityForResult(Intent intent, int requestCode).

...