我在String转换中遇到问题,我通过意图传递一个值并通过bundle访问,现在我想转换成整数,但它显示强制停止..........
MainActivity代码:
btn.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent in=new Intent(MainActivity.this,second.class);
in.putExtra("id", "12");
startActivity(in);
}
});
secondActivity代码:
Bundle extras = getIntent().getExtras();
id=extras.getString("id");
btn=(Button)findViewById(R.id.button1);
tv=(TextView)findViewById(R.id.value);
btn.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
int myid=Integer.parseInt(id);
//tv.setText(myid);
Toast.makeText(getApplicationContext(), myid,Toast.LENGTH_SHORT).show();
}
});
LogCat:>
09-25 18:21:52.045: E/AndroidRuntime(1555): FATAL EXCEPTION: main
09-25 18:21:52.045: E/AndroidRuntime(1555): android.content.res.Resources$NotFoundException: String resource ID #0xc
09-25 18:21:52.045: E/AndroidRuntime(1555): at android.content.res.Resources.getText(Resources.java:230)
09-25 18:21:52.045: E/AndroidRuntime(1555): at android.widget.Toast.makeText(Toast.java:265)
09-25 18:21:52.045: E/AndroidRuntime(1555): at com.example.convert.second$1.onClick(second.java:34)
09-25 18:21:52.045: E/AndroidRuntime(1555): at android.view.View.performClick(View.java:4204)
09-25 18:21:52.045: E/AndroidRuntime(1555): at android.view.View$PerformClick.run(View.java:17355)
09-25 18:21:52.045: E/AndroidRuntime(1555): at android.os.Handler.handleCallback(Handler.java:725)
09-25 18:21:52.045: E/AndroidRuntime(1555): at android.os.Handler.dispatchMessage(Handler.java:92)
09-25 18:21:52.045: E/AndroidRuntime(1555): at android.os.Looper.loop(Looper.java:137)
09-25 18:21:52.045: E/AndroidRuntime(1555): at android.app.ActivityThread.main(ActivityThread.java:5041)
09-25 18:21:52.045: E/AndroidRuntime(1555): at java.lang.reflect.Method.invokeNative(Native Method)
09-25 18:21:52.045: E/AndroidRuntime(1555): at java.lang.reflect.Method.invoke(Method.java:511)
09-25 18:21:52.045: E/AndroidRuntime(1555): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-25 18:21:52.045: E/AndroidRuntime(1555): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-25 18:21:52.045: E/AndroidRuntime(1555): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
不要TextView.setText(int)
,执行TextView.setText(String)
,这意味着完全跳过对话。 setText()
可以使用多个输入as shown here。
在您的情况下发生的事情是,由于您将值转换为整数,因此您无意中调用public final void setText (int resid)
,假定传入其中的整数是{{1}中某事物的值。strings.xml
1}}文件。
这显然不是你想做的事情,所以你可以做两件事之一来解决它:
setText("" + myid)
;