2017-06-19 20 views
0

我有一個問題,當我將數據發送到應用程序,我只收到消息,但我要像等改變按鍵的形狀,但它不工作廣播接收器的一些代碼將不會工作

package com.pioneer.it.gcmpro; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Color; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 


public class PushReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     String title="P"; 
     String text="T"; 

     if(intent.getStringExtra("message")!=null) 
      text=intent.getStringExtra("message"); 

     Intent i=new Intent(context,MainActivity.class); 
     PendingIntent pi=PendingIntent.getActivity 
       (context,0,i,PendingIntent.FLAG_UPDATE_CURRENT); 



     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View v = inflater.inflate(R.layout.activity_main,null); 
     Button b = (Button) v.findViewById(R.id.button); 

     b.setText("" + text); 
     Toast.makeText(context, "" + text, Toast.LENGTH_SHORT).show(); 



    } 
} 

這條線僅適用於Toast.makeText(上下文,「」+ text,Toast.LENGTH_SHORT).show();

但這行不行b.setText(「」+ text);

爲什麼?

回答

1

你永遠不會顯示你膨脹的佈局。所以你正在將一個佈局擴展到RAM中,然後爲文本框設置文本,但是你永遠不會在任何地方顯示它。這就是爲什麼你看不到它。

此外,在BroadcastReceiver中直接膨脹佈局是不好的做法。如果你想顯示一個視圖,請從你的onReceive開始一個活動。

這樣你不能顯示你的看法, 你應該開始你的活動併發送文本作爲額外給它這樣
+0

我不明白你有問題的解決方案 –

+0

請參閱@ meikiem的回答 – Aenadon

0

你有意向在的onReceive這樣:

intent.putExtra(text, your_key); 
context.startActivity(intent); 

和在您的MainActivity(我認爲這是MainActivity從佈局名稱)讓你的額外並將其設置是這樣的:

Button yourButton = (Button) v.findViewById(R.id.button); 
yourButton.setText(getIntent().getStringExtra("your_key")); 
+0

但應用程序踢我 –

+0

解釋更多。如果有錯誤,告訴我, – Meikiem

+0

告訴我有錯誤是在這裏context.startActivity(in); –

0

相反inflat的在Reciever中的佈局中,您可以擁有活動或片段,爲該活動或片段使用該佈局。

並在Activity/Fragment中初始化並創建該按鈕作爲公共靜態。

當您收到消息(onRecieve方法調用)時,您可以從這裏訪問該按鈕(因爲它是公共靜態的),您可以更新該按鈕的UI。