我正在尝试开发一个非常简单的应用程序,该应用程序可以计算房屋抵押贷款的总利息。有2个屏幕。第一个让用户输入每月还款额,贷款年限和初始贷款额。第一个屏幕加载就好。但是当单击按钮时,我得到一个很好的旧的“不幸的是,“ app”已停止工作。想知道是否有人可以解释为什么。这是该屏幕的Java代码:

package com.example.mortgage;

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

package com.example.mortgage;

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends ActionBarActivity {
    int enterPayment;
    int enterYears;
    int enterPrincipal;
    int totalInterest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText payment=(EditText)findViewById(R.id.txtPayment);
        final EditText years=(EditText)findViewById(R.id.txtYear);
        final EditText principal=(EditText)findViewById(R.id.txtPrincipal);

        Button btCompute = (Button)findViewById(R.id.btnCompute);
        final SharedPreferences                 sharedPref=PreferenceManager.getDefaultSharedPreferences(this);
        btCompute.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                enterPayment =    Integer.parseInt(payment.getText().toString());
                enterYears = Integer.parseInt(years.getText().toString());
                enterPrincipal = Integer.parseInt(principal.getText().toString());

                SharedPreferences.Editor editor = sharedPref.edit();
                editor.putInt("key1", enterPayment);
                editor.putInt("key2", enterYears);
                editor.putInt("key3", enterPrincipal);
                editor.commit();
                startActivity(new Intent(MainActivity.this, Status.class));

            }
        });
    }

    @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);
    }
}


以及该屏幕的XML文件:

<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mortgage.MainActivity" >

<TextView
    android:id="@+id/txtTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="30dp"
    android:text="@string/txtTitle"
    android:textSize="30sp" />

<EditText
    android:id="@+id/txtPayment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtTitle"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="19dp"
    android:ems="10"
    android:inputType="number"
    android:hint="@string/hint1" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/txtYear"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtPayment"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="29dp"
    android:ems="10"
    android:inputType="number"
    android:hint="@string/hint2" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/txtPrincipal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtYear"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="39dp"
    android:ems="10"
    android:inputType="number"
    android:hint="@string/hint3" >

    <requestFocus />
</EditText>

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="177dp"
    android:src="@drawable/mortgage"
    android:contentDescription="@string/imgMortgage" />

<Button
    android:id="@+id/btnCompute"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/imageView1"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="26dp"
    android:text="@string/btnCompute" />

 </RelativeLayout>


下一个屏幕显示计算出的利息。

  package com.example.mortgage;



 public class Status extends Activity {
int months;
int totalInterest;
@Override

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.status);
    TextView result = (TextView)findViewById(R.id.txtTotal);
    ImageView image = (ImageView)findViewById(R.id.imgYearLoan);

    SharedPreferences sharedPref =   PreferenceManager.getDefaultSharedPreferences(this);
    int intPayment = sharedPref .getInt("key1", 0);
    int intYears = sharedPref.getInt("key2", 0);
    int intLoan = sharedPref.getInt("key3", 0);

    if(intYears == 10){
        months = 120;
        totalInterest = (intPayment * months) - intLoan;

    }else if(intYears == 20){
        months = 240;
        totalInterest = (intPayment * months) - intLoan;
    }else {
        months = 360;
        totalInterest = (intPayment * months) - intLoan;
    }

    result.setText(totalInterest);


    image.setImageResource(R.drawable.ten);

  }
 }


以及该屏幕的XML:

  <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

<TextView
    android:id="@+id/txtTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="30dp"
    android:text="@string/txtTitle" />

<TextView
    android:id="@+id/txtTotal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtTitle"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="19dp"
    android:ems="10"
    android:hint="@string/hint4" />

<ImageView
    android:id="@+id/imgYearLoan"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/txtTitle"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="95dp"
    android:contentDescription="@string/imgYearLoan" />

</RelativeLayout>


错误日志仅显示“未处理的事件循环接收”

最佳答案

您正在使用整数而不是字符串调用setText()

result.setText(totalInterest);


结果,Android尝试加载具有指定(无效)标识符的字符串资源。相反,请执行以下操作:

result.setText("" + totalInterest);

09-13 07:56