2013-06-29 75 views
0

我有一个应用程序,其中许多活动打开另一个应用程序,其中某些事件在打开它的按钮(图像,标记等)后面设置。返回一个字符串vith值“1”,该值将被转换为int并用于设置分数。当我尝试通过intent发送字符串时发生错误

在返回我有这个活动:

Intent i; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.vie); 
     img = (ImageView) findViewById(R.id.img); 
     et = (EditText) findViewById(R.id.et); 
     btn = (Button) findViewById(R.id.btnCheck); 
     txt = (TextView) findViewById(R.id.txt); 

     win_sound = MediaPlayer.create(Vie.this, R.raw.win); 
     wrong_sound= MediaPlayer.create(Vie.this, R.raw.wrong); 

     i = getIntent(); 
     Bitmap back = i.getParcelableExtra("back"); 
     Drawable b = new BitmapDrawable(getResources(), back); 
     img.setImageDrawable(b); 
     String tag = i.getStringExtra("tag"); 
     Object tag2 = (Object) tag; 
     img.setTag(tag2); 
     btn.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     boolean mb = check(et, img); 
     if (mb) { 
      // Sunet toast thread 
      txt.setText(title(img)); 
      win_sound.start(); 
      i.putExtra("score", "1"); 
      setResult(RESULT_OK, i); 

      Thread t = new Thread() { 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 
        super.run(); 
        try { 
         sleep(win_sound.getDuration()); 

        } catch (Exception e) { 
         // TODO: handle exception 
         e.printStackTrace(); 
        } finally { 
         finish(); 
        } 

       } 

      }; 

      t.start(); 

     } 

     if (!mb) { 
      // sunet toast thread 
      wrong_sound.start(); 
      Toast t = Toast.makeText(getApplicationContext(),"Wrong answer! Please check if you have spelled corectly the name of the team!",Toast.LENGTH_LONG); 
      t.show(); 
     } 
    } 

而且OnActivityResult梅索德:

int a = 0 
@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 
     if (data.getExtras().containsKey("score")) { 
      a +=Integer.valueOf(data.getStringExtra("score")); 
     } 

    } 

和一个TextView设置为显示:

txtScore.setText(一) ;

但是,这给了我一个错误,这是我的logcat:

06-29 15:28:25.312: E/AndroidRuntime(981): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0 
06-29 15:28:25.312: E/AndroidRuntime(981): at android.content.res.Resources.getText(Resources.java:230) 
06-29 15:28:25.312: E/AndroidRuntime(981): at android.widget.TextView.setText(TextView.java:3769) 
06-29 15:28:25.312: E/AndroidRuntime(981): at com.RandDdev.uclquiz.Teams.onCreate(Teams.java:61) 

你能帮助我吗?

+0

后相关的代码...什么是队类 – stinepike

回答

0

请尝试txtScore.setText(“”+ a); 你不能直接设置一个int到TextView的

2
txtScore.setText(a); 

一个是Integer。所以Android正在使用该ID在R内寻找一个String。

变化与

txtScore.setText(String.valueOf(a)); 

你正在使用的不是setText(Charsequence)

+0

注意不同的[setText](http://developer.android.com/reference/android/widget/TextView。 html)方法在文档 – codeMagic

+0

中,您总是很快回答。 :)。超快速 – Raghunandan

+0

Nah,不是他平时的33秒;) – codeMagic

相关问题