这是更大代码的简化版本。我刚开始使用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文件。
来自我的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的
答案 0 :(得分:3)
您在tv.setText(c)
方法中将int设置为TextView,因此textview认为您正在传递字符串的id(如R.string.name等)。你需要这样做:
tv.setText(c + "");
答案 1 :(得分:3)
这是你的问题
tv.setText(c);
将其更改为
tv.setText(String.valueOf(c));
您可以看到here in the docs种不同的setText()
方法。您正在调用的那个接受int
作为参数,用于查找具有该“id”的资源,因此您需要将变量更改为String
。这就是您获得Resource Not found
例外的原因。它无法找到String resource
id
的{{1}}变量{。}}。
只是旁注,但您可能希望将解析代码包装在c
中,除非您正在进行其他错误检查,或者如果用户输入非{0},您最终可能会使用try/catch
整数值。
答案 2 :(得分:1)
这是你的问题:
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));
希望有所帮助!
答案 3 :(得分:0)
小心,并且ussualy看看你的logcat。似乎第一个字符串是由一个问题报告的 - “android.content.res.resources $ notfoundexception string resource id”。这实际上意味着setText()方法应该包含一个字符串参数。同样的问题与您的问题Android: android.content.res.Resources$NotFoundException: String resource ID #0x5
的解决方案有关