1

我制作了一个类(Paperclip),它使自定义对话框出现在屏幕上。在我的活动中,我创建了一个 Paperclip 实例并使对话框显示在活动上方。我想要的是,当按下某个按钮时,会执行活动上的一些代码。我希望从活动中执行此代码,因为我想要一个对话框,我可以在项目中的许多不同活动上重用它。

我正在考虑在课堂上创建一个变量,并在活动中附加一个监听器。这是一个好方法,还是有更简单的解决方案?

public class Paperclip {
    int i = 0;
    Dialog myDialog;
    TextView t;
    int mid;
    Context context2;

    public Paperclip(Context context) {
        super();
        context2 = context;
    }

    public void Showit(final String[] Messages) {
        final int lengte = Messages.length;

        myDialog = new Dialog(context2, R.style.CustomDialogTheme);
        myDialog.setContentView(R.layout.messagebox);
        t = (TextView) myDialog.findViewById(R.id.message);
        if (lengte != 0) {
            if (i < lengte) {
                t.setText(Messages[i]);
                i++;
            }
            Button iets = (Button) myDialog.findViewById(R.id.mbja);
            iets.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    if (i < lengte) {
                        t.setText(Messages[i]);
                        i++;
                    } else{
                        t.setText("Ik hoop dat deze informatie nuttig was. Klik op Ja om alles opnieuw te horen.");
                        i = 0;
                    }

                }
            });
        }
        Button iets2 = (Button) myDialog.findViewById(R.id.button2);
        iets2.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                myDialog.dismiss();
            }
        });

        Button iets3 = (Button) myDialog.findViewById(R.id.button3);
        iets2.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                //TODO: execute code from activity here.
            }
        });

        myDialog.show();
    }
}

谢谢!

4

3 回答 3

0

您可以尝试在侦听器之外使用广播,在活动中实现广播并从您的班级发送这是一个很好的例子

于 2013-05-19T11:08:03.957 回答
0

在事件中设置OnClickListener一个Button并调用你的方法onClick()

public class MyActivity extends Activity {
    Button myButton;
    String[] mMessages = new String[]{"Message 1", "Message 2", "Message 3"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myButton = (Button) findViewById(R.id.myButton);

        myButton.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                Paperclip p = new Paperclip(MyActivity.this);
                p.showit(mMessages);
            }
        });
    }
}

编辑:更正错别字和更新代码 编辑#2:根据更新的问题和代码片段更新代码

于 2013-05-19T10:56:50.300 回答
0

您必须在活动中创建对话框按钮的实例并向其添加侦听器事件并将代码发布到此侦听器中

于 2013-05-19T10:57:19.437 回答