2012-11-21 33 views
0

我喜歡通過通知服務將數據從ServicesActivity.java傳遞給NotificationView.java。但是數據傳遞在第一次是正確的,當我發送另一個數據時,它並沒有更新它以前的數據。正如你所看到的,下面的logcat輸出,第一次,我發送了兩個數據到通知和輸出它在NotificationView.java傳遞沒有問題。之後,我重新發送三個數據到它,它在NotificationView.java的輸出仍然是兩個數據。無論我送多少數據到通知,其在NotificationView.java輸出仍然遵循其第一次output.Here是logcat的輸出:數據傳遞的問題

11-21 10:42:03.645: D/String(25694): admin,admin 
11-21 10:42:33.645: D/String(25694): admin,admin,admin 
11-21 10:42:06.308: D/how(25694): admin,admin 
11-21 10:42:36.518: D/how(25694): admin,admin 

**的Log.d(「字符串」,STR)是ServicesActivity.java的displayNotification()和Log.d(「how」,i)位於NotificationView.java。

ServicesActivity.java

public class ServicesActivity extends Activity { 

IntentFilter intentFilter; 
int notification = 1; 
String datapassed; 
String str = ""; 
String[] data; 
int dlength; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_services); 

    intentFilter = new IntentFilter(); 
    intentFilter.addAction(MyService.MY_ACTION); 
    registerReceiver(intentReceiver, intentFilter); 
} 

public void startService(View view){ 
    startService(new Intent(getBaseContext(),MyService.class)); 
    Toast.makeText(getBaseContext(), "start", 
      Toast.LENGTH_SHORT).show(); 
} 

public void stopService(View view){ 
    stopService(new Intent(getBaseContext(),MyService.class)); 
    Toast.makeText(getBaseContext(), "stop", 
      Toast.LENGTH_SHORT).show(); 
} 


private BroadcastReceiver intentReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    datapassed = intent.getStringExtra("DATAPASSED"); 
    if(datapassed.length()>0){ 

     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("dataServices",str); 
     displayNotification(); 
      str = "";   
    } 
    } 
    }; 

    protected void displayNotification(){ 
     Intent i = new Intent(this,NotificationView.class); 
     i.putExtra("notification", notification); 
     i.putExtra("name",str); 
     Log.d("String",str); 
     PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0); 

     NotificationManager mnotis =(NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

     Notification notis = new Notification(R.drawable.notices2,"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); 
    } 
    } 

NotificationView.java

public class NotificationView extends Activity{ 

String[] people; 
ListView lv; 
Button btn1,btn2; 

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.view); 
    NotificationManager mnotis =(NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    mnotis.cancel(getIntent().getExtras().getInt("notificationID")); 
    String i = getIntent().getExtras().getString("name"); 
    people = i.split("[,]"); 
    Log.d("how",i); 

    lv= (ListView) findViewById(android.R.id.list); 
    btn1 = (Button)findViewById(R.id.acceptbtn); 
    btn2 = (Button)findViewById(R.id.closebtn); 
    ArrayAdapter<String> list = new ArrayAdapter<String>(NotificationView.this,R.layout.friendlist_item, R.id.friend_name,people); 
    lv.setAdapter(list); 

    btn2.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      finish(); 
     } 
    }); 
} 

} 

回答