但是我尝试使用finalBill.setText(finalB.getText());
,但是我得到一个错误,说getText()是未定义的。我现在只设置了10%按钮,但是一旦我做对了,我也会将这个代码应用到15和20方法中。
原始账单将由用户输入为双(虽然它在EditText字段中),计算(在10%按钮中)需要使用双打,并且最终账单应该是字符串或某些文本(?),以便它可以填充名为finalBill的TextView字段。请尽可能地坚持原始代码,因为我是初学者并容易混淆。谢谢你的帮助!
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);
}
}
答案 0 :(得分:2)
@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);
}
});
}
答案 1 :(得分:1)
所以,你试图使用一个String,好像它是一个TextView:
finalBill.setText(billString.getText());
但这是错误的。
这是正确的:
finalBill.setText(billString);
还有另一个问题:你重新声明billString:
String billString = String.valueOf(billWithTip);
但你已经在开头宣布了
String billString;
所以,这就足够了:
billString = String.valueOf(billWithTip);
并且......申请10%,这是一种过度杀伤力:
billWithTip = (bill * 0.10) + bill;
您只需要这样做:
billWithTip = bill * 1.10;
还有更多:
onClick侦听器未分配给按钮...它已分配给EditText:
originalBill.setOnClickListener(new View.OnClickListener() {
// ...
和originalBill实际上是一个EditText:
public EditText originalBill;
// ...
originalBill = (EditText)findViewById(R.id.originalBill);
所以,我假设您的布局中有一个名为btnTenPct
的按钮:
这样做:
public Button btnTenPct;
// ...
btnTenPct = (Button) findViewById(R.id.btnTenPct);
// ...
btnTenPct.setOnClickListener(new View.OnClickListener() {
// ...