1

アクティビティにブロードキャストを送信するアプリケーションを作成しました。このブロードキャストでは、タイプとバッジの 2 つの値を送信しています。BroadcastReceiver を拡張している内部クラスでこれらの値を受信して​​いますが、メインクラスの TextView でこれらの値を設定しようとしていますが、これらの値を設定していません。なぜこれが起こっているのか理解できません。

以下は、内部クラスが存在する私の主な活動であり、BroadcastReceiver を拡張しています:-

import java.util.List;
import android.widget.ScrollView;
import android.widget.ViewAnimator;



  public class TabActivity extends Activity implements OnClickListener{

        static String type;
        static String badges;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            ................
        }

        public static class TabBroadcast extends BroadcastReceiver
        {

            @Override
            public void onReceive(Context context, Intent intent) {
                // TODO Auto-generated method stub


                SharedPreferences shrd = context.getSharedPreferences("Gallery", context.MODE_WORLD_READABLE);
                type = shrd.getString("type", "null");
                badges = shrd.getString("badge_count", "null");


                    badge_tips_text.setText(badge);

                /*Editor edit =  shrd.edit();
                edit.remove("type");*/

                Toast.makeText(context, "" + type + "\n" + badge_tips_text.getText().toString(), Toast.LENGTH_LONG).show();
            }

        }
    }

値を受け取りましたが、TextView で値を設定できません。返信してください。

ありがとう

4

3 に答える 3

0

TabBroadcast は Activity の内部クラスであり、UI 要素へのアクセスを試みます。

public class TabActivity extends Activity implements OnClickListener{

        static String type;
        static String badges;
        public TextView badge_tips_text;  //<<<< TextView declare here
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            ................
           //<<<< initilze  TextView   here after setContentView 
        }
public static class TabBroadcast extends BroadcastReceiver
        {

            @Override
            public void onReceive(Context context, Intent intent) {
                // TODO Auto-generated method stub
                    if(TabActivity.this.badge_tips_text !=null)
                    TabActivity.this.badge_tips_text.setText(badge);
                     // your code here ...

            }

        }

}

TextView.setText を呼び出す前に、TextView が初期化されていることを確認してください。

于 2013-02-01T05:20:52.403 に答える