将数据从对话框传递到活动

时间:2015-01-10 07:26:50

标签: android

我遇到的问题是将数据从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错误

1 个答案:

答案 0 :(得分:3)

不是通过在非活动类中创建对象来扩展Activity来扩展interface的类,而是使用onClick创建自定义事件监听器,在Dialog发生{{1}}时触发事件}}

Android Custom Event Listener