Can';“不要开始另一个”;活动“;在Android中-给出错误

Can';“不要开始另一个”;活动“;在Android中-给出错误,android,exception,android-activity,resources,Android,Exception,Android Activity,Resources,这是一个较大代码的简化版本。我刚开始使用Android编程,在过去的一个小时里,我一直在努力解决这个问题 /**Main Activity**/ sumBut.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { Intent intent = new Intent(MainActivity.this, Su

这是一个较大代码的简化版本。我刚开始使用Android编程,在过去的一个小时里,我一直在努力解决这个问题

    /**Main Activity**/

    sumBut.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0) {
            Intent intent = new Intent(MainActivity.this, SumActivity.class);
            intent.putExtra("var1", et1.getText().toString());
            intent.putExtra("var2", et2.getText().toString());
            startActivity(intent);
        }
    });
此代码从文本框中获取两个变量,并将用户驱动到另一个活动,其中将显示这些数字的总和

以下是目标活动:

    public class SumActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sum);

    TextView tv = (TextView) findViewById(R.id.textView1);
    Intent intent = getIntent();
    int a = Integer.parseInt(intent.getStringExtra("var1"));
    int b = Integer.parseInt(intent.getStringExtra("var2"));
    int c = a+b;
    tv.setText(c);
}
对于我创建的所有类,res/layout文件夹中都有相关的xml文件

来自my Manifest.xml文件的示例

  <activity
        android:name="com.example.summer.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.example.summer.SumActivity"></activity>
    <activity android:name="com.example.summer.DifActivity"></activity>

LogCat

您正在
tv.setText(c)
方法中将int设置为TextView,因此TextView认为您正在传递字符串的id(如R.string.name等)。您需要这样做:

tv.setText(c + "");
这是你的问题

 tv.setText(c);
换成

 tv.setText(String.valueOf(c));
正如您将看到的,有不同的
setText()
方法。您正在调用的一个函数,它接受一个
int
作为参数,用于查找具有该“id”的资源,因此您需要将变量更改为
字符串。这就是为什么会出现
资源未找到
异常。无论变量
c
是什么,它都找不到id为
id
字符串资源

只是一个旁注,但您可能希望将解析代码包装在一个
try/catch
中,除非您正在执行其他错误检查,或者如果用户输入非整数值,您可能会出现
数字格式异常。

这是您的问题:

Intent intent = getIntent();
int a = Integer.parseInt(intent.getStringExtra("var1"));
int b = Integer.parseInt(intent.getStringExtra("var2"));
int c = a+b;
tv.setText(c);
您正在调用的setText()重载需要一个字符串或一个表示资源标识符的整数。由于
c
的类型是
int
它将其解释为资源标识符

将最后一行替换为该行将修复它:

tv.setText(Integer.toString(c));

希望有帮助

小心点,我们一定要看看你的日志。第一个字符串似乎是由一个问题报告的——“android.content.res.resources$notfoundexception string resource id”。这实际上意味着setText()方法应该包含一个字符串参数。与问题解决方案相关的相同问题

在LogCat视图中,突出显示异常行,然后按
-
将其复制到剪贴板。然后,您可以将它们作为文本粘贴到问题中。这比屏幕截图要好得多,因为您可以捕获整个堆栈跟踪,而不仅仅是屏幕截图中的内容。非常感谢!工作得很好!