按钮文字和布尔(简单的Android应用程序)

时间:2014-11-27 09:10:39

标签: android

我在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)实现这项任务的最有效方法是什么?

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(...)

你必须首先初始化按钮对象,但是:)