Android TextViews不更新与新的文本在onCreate方法的活动



我将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值

最新更新