Java 将文本设置为自定义对话框类
我试图建立一个自定义对话框,动态设置文本。下面是我的代码,它抛出了一个Java 将文本设置为自定义对话框类,java,android,Java,Android,我试图建立一个自定义对话框,动态设置文本。下面是我的代码,它抛出了一个NullPointerException更新代码 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
NullPointerException
更新代码
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
HomeItem homeItem = (HomeItem) adapter.getItem(position);
final Dialog dialog = new Dialog(databaseFightCard.this, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
WindowManager.LayoutParams lp = (dialog.getWindow().getAttributes());
lp.dimAmount = 0.5f;
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Window window = dialog.getWindow();
window.setGravity(Gravity.CENTER);
dialog.setContentView(R.layout.custom_dialog);
LayoutInflater inflater = (LayoutInflater) databaseFightCard.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout relative = (RelativeLayout) inflater.inflate(R.layout.custom_dialog, null, false);
Button play = (Button) findViewById(R.id.bPlay);
Button done = (Button) findViewById(R.id.bDone);
TextView rn = (TextView) findViewById(R.id.tvRName);
TextView ra = (TextView) findViewById(R.id.tvRAge);
TextView rr = (TextView) findViewById(R.id.tvRRecord);
TextView rh = (TextView) findViewById(R.id.tvRHeight);
TextView rw = (TextView) findViewById(R.id.tvRWeight);
TextView rc = (TextView) findViewById(R.id.tvRCity);
TextView re = (TextView) findViewById(R.id.tvRExp);
TextView bn = (TextView) findViewById(R.id.tvBName);
TextView ba = (TextView) findViewById(R.id.tvBAge);
TextView br = (TextView) findViewById(R.id.tvBRecord);
TextView bh = (TextView) findViewById(R.id.tvBHeight);
TextView bw = (TextView) findViewById(R.id.tvBWeight);
TextView bc = (TextView) findViewById(R.id.tvBCity);
TextView be = (TextView) findViewById(R.id.tvBExp);
rn.setText(homeItem.getHomeItemRedName()+"");
ra.setText(homeItem.getHomeItemRedAge()+"");
rr.setText(homeItem.getHomeItemRedRecord()+"");
rh.setText(homeItem.getHomeItemRedHeight()+"");
rw.setText(homeItem.getHomeItemRedWeight()+"");
rc.setText(homeItem.getHomeItemRedCity()+"");
re.setText(homeItem.getHomeItemRedExp()+"");
bn.setText(homeItem.getHomeItemBlueName()+"");
ba.setText(homeItem.getHomeItemBlueAge()+"");
br.setText(homeItem.getHomeItemBlueRecord()+"");
bh.setText(homeItem.getHomeItemBlueHeight()+"");
bw.setText(homeItem.getHomeItemBlueWeight()+"");
bc.setText(homeItem.getHomeItemBlueCity()+"");
be.setText(homeItem.getHomeItemBlueExp()+"");
dialog.setContentView(relative);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//add the play intent here
dialog.dismiss();
}
});
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
dialog.show();
}
});
请解释如何将文本设置为对话框。在尝试查找文本视图之前,请先尝试显示对话框,如put Dialog.show。或者先将视图充气,然后将视图传递给对话框。你现在要做的是在它膨胀之前找到它 编辑:要使用充气机,请尝试以下操作:
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout view = (RelativeLayout)inflater.inflate(R.layout.custom_dialog, null, false);
TextView rn = (TextView) view.findViewById(R.id.tvRName);
dialog.setContentView(view);
编辑2:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
HomeItem homeItem = (HomeItem) adapter.getItem(position);
final Dialog dialog = new Dialog(databaseFightCard.this, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
WindowManager.LayoutParams lp = (dialog.getWindow().getAttributes());
lp.dimAmount = 0.5f;
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Window window = dialog.getWindow();
window.setGravity(Gravity.CENTER);
LayoutInflater inflater = (LayoutInflater) databaseFightCard.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout relative = (RelativeLayout) inflater.inflate(R.layout.custom_dialog, null, false);
dialog.setContentView(relative);
Button play = (Button) relative.findViewById(R.id.bPlay);
Button done = (Button) relative.findViewById(R.id.bDone);
TextView rn = (TextView) relative.findViewById(R.id.tvRName);
TextView ra = (TextView) relative.findViewById(R.id.tvRAge);
TextView rr = (TextView) relative.findViewById(R.id.tvRRecord);
TextView rh = (TextView) relative.findViewById(R.id.tvRHeight);
TextView rw = (TextView) relative.findViewById(R.id.tvRWeight);
TextView rc = (TextView) relative.findViewById(R.id.tvRCity);
TextView re = (TextView) relative.findViewById(R.id.tvRExp);
TextView bn = (TextView) relative.findViewById(R.id.tvBName);
TextView ba = (TextView) relative.findViewById(R.id.tvBAge);
TextView br = (TextView) relative.findViewById(R.id.tvBRecord);
TextView bh = (TextView) relative.findViewById(R.id.tvBHeight);
TextView bw = (TextView) relative.findViewById(R.id.tvBWeight);
TextView bc = (TextView) relative.findViewById(R.id.tvBCity);
TextView be = (TextView) relative.findViewById(R.id.tvBExp);
rn.setText(homeItem.getHomeItemRedName()+"");
ra.setText(homeItem.getHomeItemRedAge()+"");
rr.setText(homeItem.getHomeItemRedRecord()+"");
rh.setText(homeItem.getHomeItemRedHeight()+"");
rw.setText(homeItem.getHomeItemRedWeight()+"");
rc.setText(homeItem.getHomeItemRedCity()+"");
re.setText(homeItem.getHomeItemRedExp()+"");
bn.setText(homeItem.getHomeItemBlueName()+"");
ba.setText(homeItem.getHomeItemBlueAge()+"");
br.setText(homeItem.getHomeItemBlueRecord()+"");
bh.setText(homeItem.getHomeItemBlueHeight()+"");
bw.setText(homeItem.getHomeItemBlueWeight()+"");
bc.setText(homeItem.getHomeItemBlueCity()+"");
be.setText(homeItem.getHomeItemBlueExp()+"");
dialog.setContentView(relative);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//add the play intent here
dialog.dismiss();
}
});
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
dialog.show();
}
});
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
HomeItem HomeItem=(HomeItem)适配器.getItem(位置);
最终对话框=新建对话框(databaseFightCard.this,android.R.style.Theme\u Black\u NoTitleBar\u全屏);
WindowManager.LayoutParams lp=(dialog.getWindow().getAttributes());
lp.dimAmount=0.5f;
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG\u DIM\u BEHIND);
Window=dialog.getWindow();
设置重力(重心);
LayoutFlater充气器=(LayoutFlater)数据库FightCard.this.getSystemService(Context.LAYOUT\u充气器\u服务);
RelativeLayout relative=(RelativeLayout)充气器。充气(R.layout.custom_对话框,null,false);
setContentView(相对);
按钮播放=(按钮)相对.findViewById(R.id.bPlay);
Button done=(Button)relative.findViewById(R.id.bDone);
TextView rn=(TextView)relative.findViewById(R.id.tvRName);
TextView ra=(TextView)relative.findviewbyd(R.id.tvRAge);
TextView rr=(TextView)relative.findViewById(R.id.tvRRecord);
TextView rh=(TextView)relative.findViewById(R.id.tvRHeight);
TextView rw=(TextView)relative.findviewbyd(R.id.tvRWeight);
TextView rc=(TextView)relative.findviewbyd(R.id.tvRCity);
TextView re=(TextView)relative.findviewbyd(R.id.tvrepp);
TextView bn=(TextView)relative.findviewbyd(R.id.tvBName);
TextView ba=(TextView)relative.findviewbyd(R.id.tvBAge);
TextView br=(TextView)relative.findviewbyd(R.id.tvBRecord);
TextView bh=(TextView)relative.findViewById(R.id.tvBHeight);
TextView bw=(TextView)relative.findViewById(R.id.tvBWeight);
TextView bc=(TextView)relative.findViewById(R.id.tvBCity);
TextView be=(TextView)relative.findviewbyd(R.id.tvBExp);
rn.setText(homeItem.getHomeItemRedName()+);
ra.setText(homeItem.getHomeItemRedAge()+);
rr.setText(homeItem.getHomeItemRedRecord()+);
右侧.setText(homeItem.getHomeItemRedHeight()+);
rw.setText(homeItem.getHomeItemRedWeight()+);
rc.setText(homeItem.getHomeItemRedCity()+);
re.setText(homeItem.getHomeItemRedExp()+);
bn.setText(homeItem.getHomeItemBlueName()+);
ba.setText(homeItem.getHomeItemBlueAge()+);
br.setText(homeItem.getHomeItemBlueRecord()+);
bh.setText(homeItem.getHomeItemBlueHeight()+);
setText(homeItem.getHomeItemBlueWeight()+);
bc.setText(homeItem.getHomeItemBlueCity()+);
be.setText(homeItem.getHomeItemBlueExp()+);
setContentView(相对);
play.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//在这里添加游戏意图
dialog.dismise();
}
});
done.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
dialog.dismise();
}
});
dialog.show();
}
});
我已尝试将.show()放在第一位。我不知道怎么做你说的另一件事。什么时候是设置文本的最佳时间?在dialog.setContentView(视图)之前或之后代码>设置文本时无所谓,只要布局已膨胀。您的代码将产生以下错误:java.lang.ClassCastException:android.widget.RelativeLayout无法转换为android.widget.FrameLayout
抱歉,我已更新编辑。我假设你的根布局是一个框架布局,但它是一个相对的布局。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
HomeItem homeItem = (HomeItem) adapter.getItem(position);
final Dialog dialog = new Dialog(databaseFightCard.this, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
WindowManager.LayoutParams lp = (dialog.getWindow().getAttributes());
lp.dimAmount = 0.5f;
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Window window = dialog.getWindow();
window.setGravity(Gravity.CENTER);
LayoutInflater inflater = (LayoutInflater) databaseFightCard.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout relative = (RelativeLayout) inflater.inflate(R.layout.custom_dialog, null, false);
dialog.setContentView(relative);
Button play = (Button) relative.findViewById(R.id.bPlay);
Button done = (Button) relative.findViewById(R.id.bDone);
TextView rn = (TextView) relative.findViewById(R.id.tvRName);
TextView ra = (TextView) relative.findViewById(R.id.tvRAge);
TextView rr = (TextView) relative.findViewById(R.id.tvRRecord);
TextView rh = (TextView) relative.findViewById(R.id.tvRHeight);
TextView rw = (TextView) relative.findViewById(R.id.tvRWeight);
TextView rc = (TextView) relative.findViewById(R.id.tvRCity);
TextView re = (TextView) relative.findViewById(R.id.tvRExp);
TextView bn = (TextView) relative.findViewById(R.id.tvBName);
TextView ba = (TextView) relative.findViewById(R.id.tvBAge);
TextView br = (TextView) relative.findViewById(R.id.tvBRecord);
TextView bh = (TextView) relative.findViewById(R.id.tvBHeight);
TextView bw = (TextView) relative.findViewById(R.id.tvBWeight);
TextView bc = (TextView) relative.findViewById(R.id.tvBCity);
TextView be = (TextView) relative.findViewById(R.id.tvBExp);
rn.setText(homeItem.getHomeItemRedName()+"");
ra.setText(homeItem.getHomeItemRedAge()+"");
rr.setText(homeItem.getHomeItemRedRecord()+"");
rh.setText(homeItem.getHomeItemRedHeight()+"");
rw.setText(homeItem.getHomeItemRedWeight()+"");
rc.setText(homeItem.getHomeItemRedCity()+"");
re.setText(homeItem.getHomeItemRedExp()+"");
bn.setText(homeItem.getHomeItemBlueName()+"");
ba.setText(homeItem.getHomeItemBlueAge()+"");
br.setText(homeItem.getHomeItemBlueRecord()+"");
bh.setText(homeItem.getHomeItemBlueHeight()+"");
bw.setText(homeItem.getHomeItemBlueWeight()+"");
bc.setText(homeItem.getHomeItemBlueCity()+"");
be.setText(homeItem.getHomeItemBlueExp()+"");
dialog.setContentView(relative);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//add the play intent here
dialog.dismiss();
}
});
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
dialog.show();
}
});