Java 从类中调用活动中的函数

Java 从类中调用活动中的函数,java,android,Java,Android,我制作了一个类(回形针),可以在屏幕上显示一个自定义对话框。在我的活动中,我创建了一个回形针实例,并使对话框显示在活动上方。我想要的是,当按下某个按钮时,会执行活动中的某些代码。我希望此代码从活动中执行,因为我希望有一个对话框,可以在项目中的许多不同活动中重用 我正在考虑在课堂上制作一个变量,并在活动中为其添加一个侦听器。这是一个好方法,还是有一个更简单的解决方案 public class Paperclip { int i = 0; Dialog myDialog; T

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

我正在考虑在课堂上制作一个变量,并在活动中为其添加一个侦听器。这是一个好方法,还是有一个更简单的解决方案

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();
    }
}
公共类回形针{
int i=0;
对话我的对话;
文本视图t;
int mid;
语境2;
公共回形针(上下文){
超级();
context2=上下文;
}
public void Showit(最终字符串[]消息){
最终整数长度=Messages.length;
myDialog=新建对话框(context2,R.style.CustomDialogTheme);
myDialog.setContentView(R.layout.messagebox);
t=(TextView)myDialog.findViewById(R.id.message);
如果(长度!=0){
如果(i

谢谢

按钮上设置
onClick监听器
,并在
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:基于更新的问题和代码片段更新的代码

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

您可以尝试在侦听器之外使用广播,在活动中实现广播并从类发送它
这很好

请添加代码片段。如果您不想使对话框成为组件(在其他项目中可重用),我只需向其传递对活动实例的引用,并直接调用该方法。您应该了解一些有关按钮的信息,该按钮位于类内的对话框中。编辑:误解了评论。不管怎么说,最好阅读一下(对话)[和对话片段,正如书中建议的那样。