java - 如何在 setText() 之后将文本附加到 TextView?

标签 java android textview buttonclick

这是我的计算器应用程序的MainActivity,我尝试先setText(),然后附加到TextView main

我的问题是 append() 确实有效,但在我调用 setText() 方法后它只附加一次。我希望它多次附加文本。

我该怎么做?

public class MainActivity extends Activity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculator_screen);

        TextView main = (TextView) findViewById(R.id.maintextView);
        main.setText("0.");

        Button btnSeven = (Button) findViewById(R.id.btnseven);
        btnSeven.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
       switch(view.getId()) {
           case R.id.btnseven:
               TextView main = (TextView) findViewById(R.id.maintextView);
               main.setText("");
               main.append("7");
               break;
           default :
               break;
        }
    }
}

最佳答案

问题是您通过执行以下操作重置了 TextView 上的文本:

main.setText("");

在执行附加操作之前。您的代码应如下所示:

public class MainActivity extends Activity implements OnClickListener {

    private TextView mMain;

    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculator_screen);

        mMain = (TextView) findViewById(R.id.maintextView);
        mMain.setText("0");

        Button btnSeven = (Button) findViewById(R.id.btnseven);
        btnSeven.setOnClickListener(this);
    } 

    @Override 
    public void onClick(View view) {
        String mainText = mMain.getText().toString();
        try {
            // By parsing the text as a number, you make sure you handle the cases where the user added input like "0." too, so you don't have to handle each and every case with Strings and with if-else statements.
            double actualNumber = Double.parseDouble(mainText);
            if (actualNumber == 0) {
                mMain.setText("");
            }
        } catch (NumberFormatException e) {
            e.printStackTrace();
            // Something went wrong while parsing. Usually happens because the EditText contains other characters the digits or "."
        }

        switch(view.getId()) {
            case R.id.btnseven:
                mMain.append("7");
                break; 
            default : 
                break; 
        } 
    } 
} 

关于java - 如何在 setText() 之后将文本附加到 TextView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34800011/

相关文章:

android - 当我的应用程序进入后台时,如何防止 Android 截屏?

android - textView 行 - 建议

android - 带有 TextView autoLink 的 ListView 未收到 OnItemClickListener

java - 如何删除数组中的指定字符并将元素复制到另一个数组

java - ViewPager 中每个 ImageView 的 ID

用于触摸屏设备的 JavaScript 库

ios - Material TextView 占位符不起作用

android - 当用户在 android 中点击它时,如何从自动完成 TextView 中失去焦点并获得焦点?

java - 在 Java 中运行 python 或其他语言代码

java - illegalargumentexception - 项目在 Netbeans 上运行但不作为 War 文件在 Tomcat 上运行