0

サービスからデータを取得して通知に渡そうとしていますが、実際のデバイスで実行すると、通知に「友達リクエストを送信しました」と表示されるだけで、データが消えました。その後、logcatで問題を見つけました。出力は次のように表示されます。

Logcat出力:

   11-19 23:12:18.344: D/dataServices1(17701): admin*admin*
   11-19 23:12:18.344: D/dataServices2(17701): [Ljava.lang.String;@40d9f0d8
   11-19 23:12:18.344: D/dataServices3(17701): nulladmin,admin,
   11-19 23:12:18.344: D/dataServices3(17701): ,

admin * admin*<ここに2つのデータを送信しました。

だから私の問題は、それを「[Ljava.lang.String; @ 40da8e78」から「admin」に変換する方法と、なぜ「[Ljava.lang.String; @ 40da8e78」だけが表示され、2回は表示されないのですか?」[Ljava.lang.String; @ 40da8e78 [Ljava.lang.String; @ 40da8e78 ...そしてなぜ"str"(dataServices3)出力がこのように表示されるのですか?

コードは次のとおりです。

   String datapassed; 
   String str = "";
   String[] data;
   int dlength;

   public void onReceive(Context context, Intent intent) {
    datapassed = intent.getStringExtra("DATAPASSED");
    if(datapassed.length()>0){
    //update from here
        data = datapassed.split("[*]");
        dlength = data.length;

        for(int i=0;i<dlength;i++){
            if(i==dlength-1){
                str += String.valueOf(data[i]);                 
            }else{
                str += String.valueOf(data[i]) + ",";
            }
            Log.d("dataServices3",str);
            displayNotification();

        }
            str = "";
        Log.d("dataServices1",datapassed);
        Log.d("dataServices2",data.toString());
     //to here
    }
    }
    };

    protected void displayNotification(){
        Intent i = new Intent(this,NotificationView.class);
        i.putExtra("notification", notification);

        PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0);

        NotificationManager mnotis =(NotificationManager)getSystemService(NOTIFICATION_SERVICE);

        Notification notis = new Notification(R.drawable.ic_launcher,"Reminder:You have " + dlength + " new friend request",System.currentTimeMillis());
        notis.setLatestEventInfo(this,"Friend Request", str + "has sent you a friend request",pi);
        notis.vibrate = new long[]{100,250,100,500};
        mnotis.notify(0, notis);
    }

実行後のlogcatエラー出力は次のとおりです。

 11-19 23:28:46.388: E/ExternalAccountType(11253): Unsupported attribute readOnly
 11-19 23:28:46.648: E/ExternalAccountType(11253): Unsupported attribute readOnly
 11-19 23:28:57.218: E/MediaProvider(19282): invalid album art, error creating album thumb file
4

1 に答える 1

0

たぶん私はそれを正しく理解していませんでした、あなたは配列にオブジェクトを持っていて、それに変換したいのは型クラスです、この場合はですadmin。文字列のように配列を保持しなかった場合はarray[0] = obj.toString()、以下のようにオブジェクトをキャストできます。

admin adminFromData = null;
if (obj.getClass().isInstance(admin.class)) 
{
    admin = (admin)obj;
}
 //what ever you want with the admin object.
于 2012-11-19T15:43:11.897 に答える