我遇到的问题是将数据从DialogBox
传递到Activity
。我的主要活动是
单击按钮时有一个Button
,它会打开一个对话窗口。Dialog window
有
EditText
和两个Buttons
。点击添加按钮时,需要将EditText
数据传递给主要活动。这就是场景。这是我的代码。
MainActivity.java
public class MainActivity extends ActionBarActivity {
Button showdialog;
CustomDialog cdd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showdialog = (Button) findViewById(R.id.button);
showdialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cdd=new CustomDialog(MainActivity.this);
cdd.show();
}
});
}
public void getinfo() {
Toast.makeText(this,"hi",Toast.LENGTH_SHORT).show();
cdd.dismiss();
}
}
CustomDialog.java
public class CustomDialog extends Dialog implements View.OnClickListener{
Activity c;
Button add,cancel;
EditText name;
MainActivity act;
public CustomDialog(Activity a) {
super(a);
this.c=a;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_dialog);
add = (Button) findViewById(R.id.button2);
cancel = (Button) findViewById(R.id.button3);
name = (EditText) findViewById(R.id.editText);
add.setOnClickListener(this);
cancel.setOnClickListener(this);
act = new MainActivity();
Intent myintent=new Intent();
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.button2:
act.getinfo();
break;
case R.id.button3:
dismiss();
}
}
}
如果我运行此代码,则会出现MainActivity Leaked
错误
答案 0 :(得分:3)
不是通过在非活动类中创建对象来扩展Activity
来扩展interface
的类,而是使用onClick
创建自定义事件监听器,在Dialog
发生{{1}}时触发事件}}