自定义的dialog类,在主窗口的button的OnClick事件被调出来,请问怎么得到dialog的值,有代码,帮改代码!!!

Ptrtoptr 2014-12-06 04:32:38

下面是button的OnClick代码很简单
dlg= new BaseSettingDlg(this,android.R.style.Theme_NoTitleBar_Fullscreen);
dlg.show();
下面是我自定义的dialog类,
package fac.pro.dialogs;
import fac.pro.R;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;

public class BaseSettingDlg extends Dialog {
public BaseSettingDlg(Context context, int theme) {
super(context, theme);
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.root_setting_dlg);
}
}

下面是部局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_margin="10dip"
android:layout_height="wrap_content" android:orientation="horizontal" >
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="其它" android:layout_marginRight="5dip" android:layout_gravity="center_vertical"></TextView>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="fill_horizontal" android:ems="5" android:singleLine="true" android:numeric="decimal"></EditText>
</LinearLayout>


请问怎么在点按钮弹出dialog后,设置完那个dialog里的EditText里的值后,
在结束dialog弹出询问"是否保存修改",并且在dialog关闭后,
我的主程序能拿到刚才在dialog里修改的editText值. 请直接给代码,别只讲科学道理,没有代码,谢谢!
这个没有什么技术难点吧,
但对于新手来很难搞,请高手能实现需求,能运行的代码,谢谢
...全文
211 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ptrtoptr 2014-12-07
  • 打赏
  • 举报
回复
这5分给外甥女买糖吃
heaven_wsh 2014-12-06
  • 打赏
  • 举报
回复
package com.example.androiddemos.home;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.os.Bundle;
import android.widget.EditText;

import com.example.androiddemos.R;

public class CustomerDialog extends Dialog implements OnDismissListener{
	
	private EditText et;
	
	private ContentListener listener;
	
	public CustomerDialog(Context context, int theme, ContentListener listener) {
		super(context, theme);
		this.listener = listener;
	}

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.root_setting_dlg);
		et = (EditText) findViewById(R.id.et);
		this.setOnDismissListener(this);
	}

	@Override
	public void onDismiss(DialogInterface dialog) {
		// TODO Auto-generated method stub
		final String content = et.getText().toString();
		if(content.isEmpty()) {
			return;
		}
		AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
		builder.setMessage("Do you want save the content : " + content);
		builder.setPositiveButton("Ok",  
                new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int whichButton) {  
                    	listener.saveContent(content);
                    }
                });  
        builder.setNegativeButton("Cancel",  
                new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int whichButton) {  
                    }  
                });  
        builder.show();
	}
	
	public interface ContentListener {
		public void saveContent(String content);
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dip"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginRight="5dip"
        android:text="其它" >
    </TextView>

    <EditText
        android:id="@+id/et"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:ems="5"
        android:numeric="decimal"
        android:singleLine="true" >
    </EditText>

</LinearLayout>
/////////////////////////////// mainActivity
package com.example.androiddemos.home;

import android.app.Dialog;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.androiddemos.R;
import com.example.androiddemos.home.CustomerDialog.ContentListener;

public class DialogDemoActivity extends ActionBarActivity implements ContentListener {
	
	private Button action;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_dialog_demo);
	}
	
	public void showDialog(View view) {
		Dialog dg = new CustomerDialog(this,android.R.style.Theme_NoTitleBar_Fullscreen, this);
		dg.show();
	}

	@Override
	public void saveContent(String content) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "save " + content, Toast.LENGTH_LONG).show();
	}

}
bdmh 2014-12-06
  • 打赏
  • 举报
回复
用这个dialog的对象findviewbyid

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧