清理对话收集器类以用于所有其他活动[Android]

时间:2011-07-25 14:33:49

标签: android class dialog code-cleanup

我正在尝试并寻找一种好的方法来处理单个类中的对话,这样我就可以在我想要的任何活动中使用它们。最干净,性能最好的方法是最好的。 目前,我在主要工作完成的每个活动中进行了手工对话。如果我需要更改对话框或拨号,那么搜索我所有的课程都会很麻烦。

[已解决] 使用以下代码进行更新。

看起来很棒。希望我能用它做得很好。任何优化?

--- Dialog Class中的代码

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" />

--- Stylefile中的代码(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 个答案:

答案 0 :(得分:1)

您必须在@android:style/Theme.Dialog中创建一个主题设为Android-manifest.xml的活动。然后,您可以在我们使用startActivityForResult(Intent intent, int requestCode)的活动时将其作为对话框(或弹出窗口)使用。