我在Android开发轨道上构建了Fun Facts应用程序。我决定绕道而行,尝试为用户创建一个非常基本的介绍性消息。我将factTextView文本更改为"您可以单击下面的按钮查看新事实!"并将showFactButton文本更改为"试一试!"
从那里,我将最后一行onClick对象(是一个对象?)更改为以下内容:
public void onClick(View view) {
String fact = mFactBook.getFact();
// Update the label with our dynamic fact
factLabel.setText(fact);
// Set button text to new fact prompt
showFactButton.setText("Show another fun fact.");
这似乎工作正常。但是,我觉得"更新"每次按下相同新字符串的按钮文本都不是最佳做法,即使它很容易阅读也是如此。我试图添加一个布尔值来检查按钮的文本,并仅在尚未更新时更新它。这是我到目前为止所提出的:
View.OnClickListener listener = new View.OnClickListener() {
@Override
public String launchText = getResources().getString(R.string.start_text);
public String nextText = getResources().getString(R.string.next_text);
public String buttonText = (String) showFactButton.getText();
public boolean updateLaunchText() {
if (buttonText.equals(launchText)) {
buttonText.replaceAll(launchText, nextText);
return true;
}
else {
return true;
}
}
public void onClick(View view) {
String fact = mFactBook.getFact();
// Update the label with our dynamic fact
factLabel.setText(fact);
}
};
将以下内容添加到strings.xml:
<string name="start_text">Try it out!</string>
<string name="next_text">Show another Fun Fact!</string>
没有错误,但是按钮文字保持打开状态&#34;尝试一下!&#34;我确信所有额外的对象都是完全没有必要的,与此应用范围的第一个工作方法相比,但是我还是想弄明白,因为我真的没有知道我在做什么布尔值。
问题:1)在较长的布尔方法中我缺少什么? 2)实现这项任务的最有效方法是什么?
答案 0 :(得分:0)
在哪里调用方法updateLaunchText()?
您应该将对象更改为全局对象(而不是创建进入侦听器):
private String launchText = getResources().getString(R.string.start_text);
private String nextText = getResources().getString(R.string.next_text);
private String buttonText = (String) showFactButton.getText();
并将方法updateLaunchText()也从侦听器中取出。 然后进入onClick(View视图)调用updateLaunchText(),如下所示:
public void onClick(View view) {
updateLaunchText();
String fact = mFactBook.getFact();
// Update the label with our dynamic fact
factLabel.setText(fact);
}
答案 1 :(得分:0)
您是否将侦听器连接到按钮对象?没有该连接,没有逻辑应用于按钮单击。它是这样的:
buttonName.setOnClickListener(...)
你必须首先初始化按钮对象,但是:)