通过按钮在自定义对话框内更新textview
|
因此,我当前的问题是,当按下按钮时,我找不到一种优雅的方式来更新对话框。我可以通过dismiss()和show()在功能上实现相同的结果,但这很难看。
可以说该对话框有3个按钮,用于出售玩家拥有的小部件。全部卖出,卖出10和卖出X(使用EditText输入的金额)。我希望对话框在播放器按下“卖出10”的情况下仍然存在,而且还希望使用新的小部件数量来更新其文本视图。
自定义对话框的XML布局的相关部分:
<LinearLayout android:id=\"@+id/linearLayout3\" android:layout_height=\"wrap_content\" android:layout_width=\"match_parent\">
<TextView android:id=\"@+id/sell10Text\" android:layout_width=\"wrap_content\" android:text=\"TextView\" android:layout_height=\"wrap_content\" android:layout_weight=\"2\"></TextView>
<Button android:text=\"Sell 10\" android:enabled=\"false\" android:layout_width=\"wrap_content\" android:id=\"@+id/sell10Button\" android:layout_height=\"wrap_content\" android:layout_weight=\"1\"></Button>
</LinearLayout>
对话框创建的相关部分:
final Dialog alert = new Dialog(this);
alert.setTitle(\"Sell how many \"+(masterRes.get(currentResIndex).getName())+\"?\");
alert.setContentView(R.layout.selldialog);
TextView tvsellAll = (TextView) alert.findViewById(R.id.sellAllText);
TextView tvsell10 = (TextView) alert.findViewById(R.id.sell10Text);
//etc etc more handles, including buttons
tvsellAll.setText(\"Sell All (\"+String.valueOf(masterRes.get(currentResIndex).getHeld())+\") - $\"+String.valueOf(calcCost(masterRes.get(currentResIndex).getHeld())));
tvsell10.setText(\"Sell 10 - $\"+String.valueOf(calcCost(10)));
// etc etc more setTexts
btnsell10.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
if (v.isEnabled()) {
int y=masterRes.get(currentResIndex).getHeld();
masterRes.get(currentResIndex).setHeld(y-10);
held -= 10;
money += (calcCost(10));
updateScreen();
alert.tvsellAll.setText(\"Sell All (\"+String.valueOf(masterRes.get(currentResIndex).getHeld())+\") - $\"+String.valueOf(calcCost(masterRes.get(currentResIndex).getHeld())));
alert.tvsell10.setText(\"Sell 10 - $\"+String.valueOf(calcCost(10)));
alert.tvsellAmt.setText(\"Sell Amount (0-\"+String.valueOf(masterRes.get(currentResIndex).getHeld())+\")\");
}
}
});
// etc etc other button handlers, alert.show() at the end
现在,很明显,按钮内的setText无法解析,因为它们看不到我创建的警报,因此只能看到OnClickListener。
我尝试像处理主活动的updater updateScreen()一样处理此问题,该更新屏幕为Runnable
,它是setTexts和/或invalidates的长列表,为is3ѭ。非常适合基础活动。
我做了一些copypasta并尝试制作一个updateSellScreen(),使其挂接到自定义对话框的文本视图中,但是它无法解析警报类……我现在有点迷失了。
甚至不浪费所有内容并仅创建自定义视图,是否有可能做到这一点(我非常反对尝试将新问题引入Android编程...)
没有找到相关结果
已邀请:
2 个回复
扑北爱
佃蒜狗掂哥