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