我见过很多例子,其中一个使用 if 条件或 case 语句以编程方式更改元素的条件...... yadda yadda。我需要根据用户单击的内容更改按钮的值。以下是我目前拥有的代码。
Button btnOpenPopup = (Button)findViewById(R.id.polarity);
btnOpenPopup = (Button) findViewById(R.id.color);
final Button finalBtnOpenPopup = btnOpenPopup;
btnOpenPopup.setOnClickListener(new Button.OnClickListener(){CONTINUES TO OTHER FUNCTIONS }
我基本上需要知道按下了什么按钮。然后将其动态填充到 findViewById() 函数中。IE
btnOpenPopup = (Button) findViewById(R.id.DYNAMTICVALUEOFBUTTONUSERHASPRESSED);
这样,当它到达代码的最后一个 Button 部分时,它将具有用户单击的值。如果我只想在不同的配置中拥有一个按钮或一页一英里深的代码(不理想),那么代码就可以工作。
到目前为止,我看到的所有示例都是在用户单击按钮之后(这是我想要的),但是它们像上面的代码所示静态地命名按钮名称,但非常静态。
希望一切都说得通。
更新:
我想我可能混淆了情况。下面是剩下的代码。希望这将提供上下文。btnOpenPopup 需要保持与在调用中使用的相同,以执行新窗口实际弹出的命令。希望这将为我想要实现的目标提供更多背景信息。
final Button finalBtnOpenPopup = btnOpenPopup;
btnOpenPopup.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.meditationpopup, null);
//set the title of the popup
TextView titletext = (TextView) popupView.findViewById(R.id.chakratitle);
titletext.setText(activityName);
if (activityName.equals("Root"))
{
switch (arg0.getId())
{
case R.id.color:
//Rename the string so to get the value from the string xml
String stringName = activityName.toLowerCase().replaceAll(" ","")+"color";
TextView desctext = (TextView) popupView.findViewById(R.id.popupDesc);
desctext.setText(getString(getStringResource(getApplicationContext(),stringName)));
break;
case R.id.polarity:
//Rename the string so to get the value from the string xml
String polarityString = activityName.toLowerCase().replaceAll(" ","")+"polarity";
TextView polarityDesc = (TextView) popupView.findViewById(R.id.popupDesc);
//polarityDesc.setText(activityName);
polarityDesc.setText(getString(getStringResource(getApplicationContext(),polarityString)));
break;
}
}