-1

ここで文字列変換に問題があります。インテントを介して値を渡し、バンドルを介してアクセスします。今は整数に変換したいのですが、強制停止が表示されています........

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

    });

2 番目のアクティビティ コード:

    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)
4

1 に答える 1

0

しないTextView.setText(int)、するTextView.setText(String)、つまり、会話を完全にスキップすることを意味します。ここに示すように、複数の入力setText()を取ることができます。

あなたのケースで起こっていることは、値を整数に変換しているため、渡された整数がファイル内public final void setText (int resid)の何かの R.id 値であると想定して誤って呼び出していることです。strings.xml

これは明らかにあなたがやりたいことではないので、次の 2 つの方法のいずれかで修正できます。

  1. setText("" + myid)setText() を;に置き換えます。
  2. 値を int に変換するのはやめましょう。
于 2013-09-25T18:29:49.920 に答える