Can';“不要开始另一个”;活动“;在Android中-给出错误
这是一个较大代码的简化版本。我刚开始使用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
/**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视图中,突出显示异常行,然后按-
将其复制到剪贴板。然后,您可以将它们作为文本粘贴到问题中。这比屏幕截图要好得多,因为您可以捕获整个堆栈跟踪,而不仅仅是屏幕截图中的内容。非常感谢!工作得很好!