使用AlertDialog.Builder类设置view的时候,不能显示我的布局内容

Julse 2017-06-10 04:06:24
使用AlertDialog.Builder类设置view的时候,如果写在类中显得代码比较臃肿,但是如果把view单独封装在一个函数中,此时只能显示图标和按钮,不能显示我的布局内容。

view=new Regist_dialog(LoginActivity.this);
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setTitle("注册");
builder.setIcon(R.drawable.smile);
builder.setView(view);
builder.setInverseBackgroundForced(false);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {

Toast.makeText(LoginActivity.this, view.regist_action(), Toast.LENGTH_SHORT).show();
}
});

builder.create().show();
封装的view如下:
package view;

import model.UserInfo;
import model.WeatherDB;

import com.julse.com.R;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class Regist_dialog extends View{
private EditText e_name;
private EditText e_pwd;
private EditText e_pwd_repeat;
private Context context ;
private WeatherDB weatherDB;
public Regist_dialog(Context context) {
super(context);
this.context = context;
LayoutInflater inflater = LayoutInflater.from(context);
View view=inflater.inflate(R.layout.regist_layout, null);

e_name=(EditText)view. findViewById(R.id.editText1);
e_pwd=(EditText) view.findViewById(R.id.editText2);
e_pwd_repeat=(EditText)view. findViewById(R.id.editText3);

Log.i("Life","e_name is empty:"+(e_name==null));

}
public String regist_action(){
String name=e_name.getText().toString();
String pwd=e_pwd.getText().toString();
String pwd_repeat= e_pwd_repeat.getText().toString();
String mes=null;
weatherDB= WeatherDB.getInstance(context);

// TODO Auto-generated method stub
if (TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)||TextUtils.isEmpty(pwd_repeat)) {
mes = "用户名或密码不能为空";
}else if (pwd.equals(pwd_repeat)) {
mes = "两次输入密码不一致";
}else if (weatherDB.find_user(name)) {
mes = "用户名已存在";
}
else {
UserInfo userInfo = UserInfo.getInstance();
userInfo.setUsername(name);
userInfo.setUserpwd(pwd);
if (weatherDB.regist(userInfo)) {
Log.i("Life", "注册成功");
mes = "注册成功";
}else {
mes = "注册失败";
}

}
return mes;
}
}
...全文
468 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
水手辛巴 2017-06-11
  • 打赏
  • 举报
回复
自定义view不是这么用的,LayoutInflater只是做了把xml文件转换为view对象的操作。 如果按照楼主的思路可以这样 主要需要实现的是ViewGroup

public class MyViewGroup extends LinearLayout {
    public MyViewGroup(Context context) {
        super(context);
        //第三个参数设为true 会将这个布局文件转换的View加入这个ViewGroup
        View view = LayoutInflater.from(context).inflate(R.layout.regist_layout,this,true);
        //write your code
    }
}
qq_32186863 2017-06-11
  • 打赏
  • 举报
回复
按照我写的你修改下,是可以显示出 自己的布局的,我在手机上跑了 才回复的
qq_32186863 2017-06-10
  • 打赏
  • 举报
回复
1,引用时 , RegistView mRegistView=new RegistView(this); new AlertDialog.Builder(MainActivity.this).setTitle("ffff").setMessage("dddd").setView(v).setNegativeButton("cancel",null).setPositiveButton("confirm", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MainActivity.this, mRegistView.getStrings(), Toast.LENGTH_SHORT).show(); } }).create().show(); 2,将你的自定义View 参照以下修改,如果 布局里 是 LinearLayout 就继承LinearLayout ,是RelativeLayout 就继承RelativeLayout public class RegistView extends LinearLayout { private LinearLayout layout = null; private Context mContext; private EditText et; public RegistView(Context context) { super(context); mContext=context; initView(context); } public RegistView(Context context, AttributeSet attrs) { super(context, attrs); mContext=context; initView(context); } public RegistView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mContext=context; initView(context); } private void initView(Context context) { if (layout == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 布局高度 应设置为 wrap_content layout = (LinearLayout) inflater.inflate(R.layout.dialog_regist, this); et=(EditText)layout.findViewById(R.id.editText1); } } //获取输入值的结果 public String getStrings(){ String et1=et.getText().toString(); return et1; } }

80,337

社区成员

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

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