1

私のアクティビティの 1 つからグループのメイン アクティビティに文字列を送信しようとしていますが、小さな問題があります。コードの onActivityResult 部分でオブジェクトを作成しようとしています(これはうまくいくようです)。しかし、このクラスから getName() 以外のメソッドにアクセスしようとすると、リソースが見つからないという例外が発生します。解決策は簡単だと確信していますが、かなり調べた後も引き続き解決できません。コードはこちらです....

主な活動

public void onActivityResult(int requestCode, int resultCode, Intent data)
   {
       super.onActivityResult(requestCode, resultCode, data);
       switch(requestCode)
       {
       case 0:
           //for add activity
           if(resultCode == RESULT_OK)
           {

                        namePasser = data.getExtras().getString("tallyName").toString();
                        itemHm.put("item1", new Items(namePasser,1));
                        itemAmt++;
                        currItem = itemHm.get("item1");
                        nameView1.setText(currItem.getName());
                        countView1.setText(currItem.getGroup());
                        count1b.setVisibility(View.VISIBLE);
                        reduce1b.setVisibility(View.VISIBLE);
                        countView1.setVisibility(View.VISIBLE);
                        resetb.setVisibility(View.VISIBLE);

           }
       }
   }

追加アクティビティ

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class addActivity extends Activity
{
    EditText name;
    String itemName;
    Button next;
    Intent data;
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.addactivityxml);
        Button next = (Button) findViewById(R.id.button1);
        next.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View view) 
            {
                name = (EditText)findViewById(R.id.newitemtxt);
                itemName = name.getText().toString();
                data = new Intent();
                data.putExtra("tallyName", itemName);
                setResult(RESULT_OK, data);
                finish();
            }
        });
    }
}

アイテム クラス

public class Items
{
    int id = 0;
    int group = 0;
    String name = "";
    int count = 0;
    public Items(String name, int count)
    {
        this.count = count;
        this.name = name;
    }
    public Items(String name, int count, int group)
    {
        this.group = group;
        this.name = name;
        this.count = count;
    }
    public Items(int id, String name, int group)
    {
        this.id = id;
        this.group = group;
        this.name = name;
    }
    public String getName()
    {
        return name;
    }
    public int getCount()
    {
        return count;
    }
    public int addCount()
    {
        count++;
        return count;
    }
    public int reduceCount()
    {
        if(count > 0)
        {
            count--;
            return count;
        }
        return count;
    }
    public int resetCount()
    {
        count = 0;
        return count;
    }
    public void setGroup(int group)
    {
        this.group = group;
    }
    public int getGroup()
    {
        return group;
    }
}

nameView1.setText(currItem.getName()); を実行すると、データ自体が onActivity Result に渡されます。問題があっても、

しかし、countView1.setText(currItem.getGroup()); を実行しようとすると、問題が発生したとき

おー!エラーログはこちら

04-19 11:09:56.219: W/dalvikvm(1970): threadid=1: キャッチされない例外で終了するスレッド (group=0x409c01f8) 04-19 11:09:56.258: E/AndroidRuntime(1970): 致命的な例外: メイン04-19 11:09:56.258: E/AndroidRuntime(1970): java.lang.RuntimeException: 結果の配信に失敗しました ResultInfo{who=null, request=0, result=-1, data=Intent { (エクストラあり) }}アクティビティへ {com.DanielFurnell.iTallyLite/com.DanielFurnell.iTallyLite.ITallyLiteActivity}: android.content.res.Resources$NotFoundException: 文字列リソース ID #0x0 04-19 11:09:56.258: E/AndroidRuntime(1970): at android.app.ActivityThread.deliverResults(ActivityThread.java:2980) 04-19 11:09:56.258: E/AndroidRuntime(1970): android.app.ActivityThread.handleSendResult(ActivityThread.java:3023) 04-19 11: 09:56.258: E/AndroidRuntime(1970): android.app.ActivityThread.access$1100(ActivityThread.java:123) 04-19 11:09:56.258: E/AndroidRuntime(1970): android.app.ActivityThread$H.handleMessage(ActivityThread.java:1177) 04-19 11:09:56.258 : E/AndroidRuntime(1970): android.os.Handler.dispatchMessage(Handler.java:99) 04-19 11:09:56.258: E/AndroidRuntime(1970): android.os.Looper.loop(Looper. java:137) 04-19 11:09:56.258: E/AndroidRuntime(1970): android.app.ActivityThread.main(ActivityThread.java:4424) 04-19 11:09:56.258: E/AndroidRuntime(1970) : java.lang.reflect.Method.invokeNative(Native Method) 04-19 11:09:56.258: E/AndroidRuntime(1970): java.lang.reflect.Method.invoke(Method.java:511) 04- 19 11:09:56.258: E/AndroidRuntime(1970): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 04-19 11:09:56.258: E/AndroidRuntime(1970) :com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 04-19 11:09:56.258: E/AndroidRuntime(1970): dalvik.system.NativeStart.main(ネイティブ メソッド) 04-19 11:09:56.258: E/AndroidRuntime(1970): 原因: android.content.res.Resources$NotFoundException: 文字列リソース ID #0x0 04-19 11:09:56.258: E/AndroidRuntime(1970): Android. content.res.Resources.getText(Resources.java:247) 04-19 11:09:56.258: E/AndroidRuntime(1970): android.widget.TextView.setText(TextView.java:3473) 04-19 11: 09:56.258: E/AndroidRuntime(1970): com.DanielFurnell.iTallyLite.ITallyLiteActivity.onActivityResult(ITallyLiteActivity.java:73) 04-19 11:09:56.258: E/AndroidRuntime(1970): android.app.Activity で.dispatchActivityResult(Activity.java:4649) 04-19 11:09:56.258: E/AndroidRuntime(1970): android.app.ActivityThread で。deliveryResults(ActivityThread.java:2976) 04-19 11:09:56.258: E/AndroidRuntime(1970): ... 11 もっと見る

また、ActivityResultの外で他の値を割り当てることができるので、アイテムのテキストボックスに問題はないと確信しています。

4

2 に答える 2

2
countView1.setText(currItem.getGroup());

この行に問題がある可能性があります。タイプをgetGroup返しintます。文字列 ID と考えられるため、戻り値が有効な文字列 ID であるかどうかを確認する必要があります。戻り値でコンテンツを設定するだけの場合は、次をgetGroup使用してみてください。

countView1.setText(currItem.getGroup()+"");
于 2012-04-19T02:14:17.757 に答える
0
name = (EditText)findViewById(R.id.newitemtxt);

クリックイベントからこの行を削除し、ボタンの下に追加します next = ...

そして試してみてください..

于 2012-04-19T02:10:56.353 に答える