通过意图传递一个数字,但App force关闭

问题描述:

我做了一个简单的Android程序,计算两个数字并使用Intent机制在第二个屏幕上显示结果...但问题是应用程序是强制关闭,当我点击计算移动到第二个屏幕.. 我所注册的活动清单文件和处理字符串值时应用效果很好..通过意图传递一个数字,但App force关闭

第一屏

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; 

我在这里开始的明确意图与和

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")); 


} 

    } 
+0

似乎你正在获取此行的'ResourceNotFoundException' coz'text.setText(getIntent()。getExtras()。getInt(“just”))''。当向“TextView”显示数字时,总是对'String'进行显式转换。 – Geros

+0

发布错误日志。 –

没有你的日志猫我不能确定它没有崩溃之前,但当你u盘上这一行文字:

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

你实际上调用this方法定义:

public final void setText (int resid) 

因为你给它传递INT从getInt调用返回。这是寻找一个资源标识符(这大概不存在,因此崩溃 - 虽然我不能确定没有你的logcat输出,它不会更早崩溃)。

你需要做的就是让INT的字符串值:

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

尝试做这样的事情

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

setText()正在寻找这个值getIntent的resource id()getExtras。 ().getInt( “只是”)。您需要获取您传递的intString值。

Different setText methods

此外,你应该围绕你的解析在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 :\\"); 
} 

显然,你不想只是记录异常但打印一条错误信息或其他相关的东西