我将TextViews添加到一个简单的应用程序中,运行一些代码来确定每个应用程序中应该显示什么文本,然后根据用户先前在bundle中输入的内容显示它。
问题是根本没有文本显示!
我正在onCreate方法中运行代码,该方法确定应该根据从bundle中的先前活动传递的值显示哪些文本。这些值似乎没有错误地传递进来,活动中的其他TextView反映了变化,但不是收入,费用或incomeExpenses TextView。
下面是我的代码: package androidbro.costoflivingcalculator;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import java.io.*;
import java.io.Console;
public class FinalGrade extends ActionBarActivity {
//Grade and message strings
public String myGrade;
public String finalMessage;
//Doubles for calculated values
public double rentMortgage;
public double utilities;
public double insurance;
public double phoneInternet;
public double food;
public double carPayment;
public double misc;
public double myIncome;
public double totalExpenses;
public double expensesToIncome;
//Calculate grade based on expenses to income ratio
public String getGrade(double expensesToIncome) {
String grade = "A";
if (expensesToIncome<=0.3) {
grade = "A";
} else if (expensesToIncome<=0.4){
grade = "B";
} else if (expensesToIncome<=0.6) {
grade = "C";
} else if (expensesToIncome<=0.8) {
grade = "D";
} else {
grade = "F";
}
return grade;
}
//Determine final message
public String getFinalMessage(String grade){
String finalMessage;
if (grade == "A"){
finalMessage = "You are living well within your means! You could probably afford to spend more. Either way, great work!";
} else if(grade == "B"){
finalMessage = "You are doing great! Your expenses are well below your income. There are a few areas to improve, but good work!";
} else if(grade == "C") {
finalMessage = "Not too bad, but not great either. You might be in trouble if you lost your income. Try to improve a little!";
} else if(grade == "D") {
finalMessage = "Uh oh! You are spending well over half the money you earn! Consider saving and investing more or it could be trouble.";
} else {
finalMessage = "Oh no! You are spending almost all your income! Save a little and live within your means or else you'll be broke!";
}
return finalMessage;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_final_grade);
//Income, expenses and bundles
Bundle b = getIntent().getExtras();
rentMortgage = b.getDouble("rentmortgage");
utilities = b.getDouble("utilities");
insurance = b.getDouble("insurance");
phoneInternet = b.getDouble("car");
food = b.getDouble("phone");
carPayment = b.getDouble("food");
misc = b.getDouble("misc");
myIncome = b.getDouble("myincome");
totalExpenses = rentMortgage+utilities+insurance+phoneInternet+food+carPayment+misc;
expensesToIncome = totalExpenses/myIncome;
//Set final message and grade values
myGrade = getGrade(expensesToIncome);
finalMessage = getFinalMessage(myGrade);
//TextViews for setting values
TextView gradeView = (TextView)findViewById(R.id.gradeView);
TextView messageView = (TextView)findViewById(R.id.messageView);
TextView income = (TextView)findViewById(R.id.income);
TextView expenses = (TextView)findViewById(R.id.expenses);
TextView incomeExpenses = (TextView)findViewById(R.id.incomeExpenses);
//Display final grade and message
gradeView.setText(myGrade);
messageView.setText(finalMessage);
income.setText(Double.toString(myIncome));
expenses.setText(Double.toString(totalExpenses));
incomeExpenses.setText(Double.toString(expensesToIncome));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_final_grade, 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();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
//Display expenses, income and expenses to income percentage on final grade
}
这是我的XML:
<ScrollView
android:layout_width="fill_parent"
android:id="@+id/scrollView"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="ericleeconklin.costoflivingcalculator.FinalGrade">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your Grade:"
android:id="@+id/textView2"
android:textSize="40dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="A"
android:id="@+id/gradeView"
android:textSize="85dp"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="You are living well within your means! You could probably afford to spend more. Either way, great work!"
android:id="@+id/messageView"
android:layout_below="@+id/gradeView"
android:layout_centerHorizontal="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Monthly Income:"
android:id="@+id/yourIncome"
android:layout_below="@+id/messageView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:paddingTop="20dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/income"
android:paddingTop="20dp"
android:background="#ff77ff75"
android:width="180dp"
android:height="25dp"
android:layout_alignBottom="@+id/yourIncome"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:text="sdsdfsd"
android:textColor="@color/abc_background_cache_hint_selector_material_dark"
android:textIsSelectable="true"
android:textSize="23dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Expenses:"
android:id="@+id/yourExpenses"
android:paddingTop="20dp"
android:layout_below="@+id/income"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/yourIncome"
android:layout_alignEnd="@+id/yourIncome"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/incomeExpenses"
android:paddingTop="20dp"
android:background="#ff77ff75"
android:width="180dp"
android:height="25dp"
android:layout_alignBottom="@+id/textView4"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:text="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/expenses"
android:paddingTop="20dp"
android:background="#ff77ff75"
android:width="180dp"
android:height="25dp"
android:layout_alignBottom="@+id/yourExpenses"
android:layout_alignLeft="@+id/incomeExpenses"
android:layout_alignStart="@+id/incomeExpenses"
android:text="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Expenses/Income"
android:id="@+id/textView4"
android:paddingTop="20dp"
android:layout_below="@+id/yourExpenses"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_toLeftOf="@+id/incomeExpenses"
android:layout_toStartOf="@+id/incomeExpenses"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Here are some tips:"
android:id="@+id/textView5"
android:paddingTop="350dp"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
</RelativeLayout>
</ScrollView>
相反的:
income.setText(Double.toString(myIncome));
expenses.setText(Double.toString(totalExpenses));
incomeExpenses.setText(Double.toString(expensesToIncome));
这样做:
income.setText(String.valueOf(myIncome);
expenses.setText(String.valueOf(totalExpenses));
incomeExpenses.setText(String.valueOf(expensesToIncome));
我已经更新了我的答案
用于在Activity之间传递双精度值:
Intent inent = new Intent(thisActivity.this, nextActivity.class);
Bundle b = new Bundle();
b.putDouble("myincome", myIncome); // myIncome is your double value here
intent.putExtras(b);
startActivity(intent);
获取下一个活动的值:
Bundle b = getIntent().getExtras();
double myIncome = b.getDouble("myincome");
检查传递双精度值的过程,我在上面已经提到过
编辑过的XML布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/tv_BigHeading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="Your Grade:"
android:textSize="40sp" />
<TextView
android:id="@+id/tv_Grade"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_BigHeading"
android:layout_centerHorizontal="true"
android:text="A"
android:textSize="80sp"
android:textStyle="bold" />
<TextView
android:id="@+id/messageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_Grade"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="You are living well within your means! You could probably afford to spend more. Either way, great work!"
android:textSize="14sp" />
<TextView
android:id="@+id/yourIncome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/messageView"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="Monthly Income:"
android:textColor="#000000"
android:textSize="14sp" />
<TextView
android:id="@+id/incomeValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/messageView"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:layout_toRightOf="@+id/yourIncome"
android:background="#ff77ff75"
android:text="1000 $"
android:textColor="#000000"
android:textSize="14sp" />
<TextView
android:id="@+id/yourExpenses"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/yourIncome"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:text="Expenses:"
android:textColor="#000000"
android:textSize="14sp" />
<TextView
android:id="@+id/expenseValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/incomeValue"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:layout_toRightOf="@+id/yourExpenses"
android:background="#ff77ff75"
android:text="1000 $"
android:textColor="#000000"
android:textSize="14sp" />
<TextView
android:id="@+id/Expenses_Income"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/yourExpenses"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:text="Expenses/Income:"
android:textColor="#000000"
android:textSize="14sp" />
<TextView
android:id="@+id/Expenses_Income_Value"
android:layout_width="wrap_content"
android:layout_height="16dp"
android:layout_below="@+id/expenseValue"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:layout_toRightOf="@+id/Expenses_Income"
android:background="#ff77ff75"
android:text="1000 $"
android:textColor="#000000"
android:textSize="14sp" />
<TextView
android:id="@+id/tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/Expenses_Income"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:text="Here are some tips:"
android:textColor="#000000"
android:textSize="16sp" />
</RelativeLayout>
</ScrollView>
这将解决你现在的问题,并使用我所有的建议,例如:income.setText(String.valueOf(myIncome);
用于设置textview值