0

我制作了一个简单的 Android 程序,它计算两个数字并使用 Intent 机制在第二个屏幕中显示结果......但问题是当我点击移动到第二个屏幕的计算时应用程序强制关闭......我已经注册了活动在清单文件中,应用程序在处理字符串值时运行良好..

第一个屏幕

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
int a;
int b;
int sum;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final EditText num1 = (EditText) findViewById(R.id.editText1);
    final EditText num2 = (EditText) findViewById(R.id.editText2);
    Button button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {

将文本字段中读取的值解析为整数

    a = Integer.parseInt(num1.getText().toString());
    b = Integer.parseInt(num2.getText().toString());
    sum = a+b;

在这里,我从 Sum 开始一个明确的意图

    Intent intent = new Intent(MainActivity.this, Second.class);
    intent.putExtra("just",sum);
    startActivity(intent);
    }
}); 
}

    }

第二屏

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    public class Second extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.second);

在这里,我正在使用第一堂课中使用的密钥检索意图中的总和

    TextView text = (TextView) findViewById(R.id.textView2);
    text.setText(getIntent().getExtras().getInt("just"));


}

    }
4

2 回答 2

1

如果没有您的日志猫,我无法确定它在此之前没有崩溃,但是当您在此行设置文本时:

text.setText(getIntent().getExtras().getInt("just"));

您实际上是在调用方法定义:

public final void setText (int resid)

因为您将getInt调用返回的 int 传递给它。这是在寻找一个资源标识符(它可能不存在,因此发生了崩溃——尽管如果没有您的 logcat 输出,我再次无法确定它不会更早地崩溃)。

您需要做的是获取 int 的字符串值:

text.setText(String.valueOf(getIntent().getExtras().getInt("just")));
于 2013-07-03T01:57:56.150 回答
0

尝试做类似的事情

TextView text = (TextView) findViewById(R.id.textView2);
int sum = getIntent().getExtras().getInt("just");
text.setText(String.valueOf(sum));

setText()正在寻找resource id这个值的 getIntent().getExtras().getInt("just")。相反,您需要获取您传递的String值。int

不同的 setText 方法

此外,您应该将解析包含在 a 中,try/catch或者在输入非整数的情况下进行一些错误检查

try
{
    a = Integer.parseInt(num1.getText().toString());
    b = Integer.parseInt(num2.getText().toString());
    sum = a+b;
}
catch (NumberFormatException e)
{
    Log.e("TAG", "You're numbers are not real numbers :\\");
}   

显然,您不想只记录异常,而是打印错误消息或其他相关内容

于 2013-07-03T01:58:20.887 回答