从类中,从活动中调用函数

时间:2013-05-19 10:51:13

标签: java android

我制作了一个类(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();
    }
}

谢谢!

3 个答案:

答案 0 :(得分: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);
            }
        });
    }
}

编辑:纠正错别字&amp;更新的代码 编辑#2:根据更新的问题和代码段更新了代码

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以尝试使用除听众之外的广播,在活动中实施广播并从您的班级发送 这里很好example