简体   繁体   English

如何将文本从计算得出的字符串传递到TextView字段?

[英]How do I get text from a calculated String to a TextView field?

it seems like I am close, but I am missing something with this. 似乎我已经接近了,但是我却错过了一些东西。 I want to create a tip calculator where you enter the amount of your original bill, then click a % button (10, 15, or 20) which calculates your tip and places it into a TextView field, which represents your total bill (called finalBill) with tip added. 我想创建一个小费计算器,在其中输入原始帐单的金额,然后单击一个%按钮(10、15或20),该按钮计算您的小费,并将其放入一个TextView字段中,该字段代表您的总帐单(称为finalBill ),并添加提示。

But I tried using finalBill.setText(finalB.getText()); 但是我尝试使用finalBill.setText(finalB.getText()); , but I get an error saying getText() is undefined. ,但我收到一条错误消息,说未定义getText()。 I have only set up the 10% button right now, but once I get it right, I will apply this code to the 15 and 20 methods too. 我现在只设置了10%的按钮,但是一旦设置正确,我也会将此代码也应用于15和20方法。

The original bill will be entered by the user as a double (although it's in an EditText field), the calculation (in the 10% button) needs to happen with doubles, and the final bill should be either a String or some text(?) so that it can fill the TextView field called finalBill. 原始账单将由用户输入为双精度字(尽管它在EditText字段中),计算(在10%按钮中)需要使用双精度数,最后的账单应为字符串或某些文本(? ),以便可以填充名为finalBill的TextView字段。 Please try to stick with the original code as much as possible, as I'm a beginner and get confused easily. 因为我是初学者,所以请尽量坚持使用原始代码,并且容易感到困惑。 Thanks for your help! 谢谢你的帮助!

package com.example.nonitips;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    public EditText originalBill;
    public double billWithTip; 
    String billString;
    public TextView finalBill;


    @Override
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        originalBill = (EditText)findViewById(R.id.originalBill);
    }

    public void onTen (View v) {
        Toast.makeText(this, "Tipping at 10%", Toast.LENGTH_SHORT).show();

        originalBill.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                double bill = Double.parseDouble(originalBill.getText().toString());
                billWithTip = (bill * 0.10) + bill;
                String billString = String.valueOf(billWithTip);
                finalBill = (TextView)findViewById(R.id.finalBill);
                finalBill.setText(billString.getText());
            }
        });

    }

    public void onFifteen (View v) {
        Toast.makeText(this, "Tipping at 15%", Toast.LENGTH_SHORT).show();
    }

    public void onTwenty (View v) {
        Toast.makeText(this, "Tipping at 20%", Toast.LENGTH_SHORT).show();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}
@Override
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        originalBill = (EditText)findViewById(R.id.originalBill);
        Button btnTen = (Button) findViewById(R.id.buttonTenPer);  // where your layout has a button with an id "buttonTenPer"
       btnTen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                double bill = Double.parseDouble(originalBill.getText().toString());
                billWithTip = (bill * 0.10) + bill;
                String billString = String.valueOf(billWithTip);
                finalBill = (TextView)findViewById(R.id.finalBill);
                finalBill.setText(billString);
            }
        });
    }

So, you were trying to use a String as if it was a TextView: 因此,您试图像使用TextView一样使用String:

finalBill.setText(billString.getText());

but this is wrong. 但这是错误的。

This is correct: 这是对的:

finalBill.setText(billString);

There is another issue: you redeclare billString: 还有另一个问题:您重新声明billString:

String billString = String.valueOf(billWithTip);

But you already declared in the beginning 但是您在一开始就已经声明

String billString;

So, this is enough: 因此,这就足够了:

billString = String.valueOf(billWithTip);

And... to apply 10%, this is an overkill: 而且...应用10%,这是一个过大的杀伤力:

billWithTip = (bill * 0.10) + bill;

You just need to do so: 您只需要这样做:

billWithTip = bill * 1.10;

And more: 和更多:

The onClick listener isn't assigned to a Button... it's assigned to an EditText: 未将onClick侦听器分配给Button ...而是将其分配给EditText:

originalBill.setOnClickListener(new View.OnClickListener() {
// ...

and originalBill is really an EditText: 而originalBill实际上是一个EditText:

public EditText originalBill;
// ...
originalBill = (EditText)findViewById(R.id.originalBill);

So, let me assume you have a button called btnTenPct in your layout: 因此,让我假设您在布局中有一个名为btnTenPct的按钮:

Do this: 做这个:

public Button btnTenPct;
// ...
btnTenPct = (Button) findViewById(R.id.btnTenPct);
// ...
btnTenPct.setOnClickListener(new View.OnClickListener() {
// ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM