android文本视图不更新

时间:2012-03-22 09:39:16

标签: android android-layout android-intent android-c2dm android-2.2-froyo

我在更新textview时遇到问题。 我正在制作一个c2dm应用程序。我发送的消息正由设备接收(因为我已将消息显示在通知栏中。我也有许多日志表明已收到消息)。但是,一旦我点击通知区域内的消息打开我的视图,它只显示我的1条消息。例如,我发送一条消息,然后我想发送另一条消息,只显示第一条消息。

我发现我可能需要一个onNewIntent但是我不确定我是否以正确的方式解决了这个问题。

 public class MessageReceivedActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_result);
        Bundle extras = getIntent().getExtras();            

        if (extras != null) {
            String message = extras.getString("payload");
            if (message != null && message.length() > 0) {
                TextView view = (TextView) findViewById(R.id.result);
                view.setText(message);
            }
        }

        super.onCreate(savedInstanceState);     
    }
     @Override
     protected void onNewIntent(Intent intent) {             

            setContentView(R.layout.activity_result);
            Bundle extras = getIntent().getExtras();                

            if (extras != null) {
                String message = extras.getString("payload");
                if (message != null && message.length() > 0) {
                    TextView view = (TextView) findViewById(R.id.result);
                     setIntent(intent);
                    view.setText(message);    
                }
            }               
//         setIntent(intent);          
     }
}

我的布局是activity_result,其中只包含1个textview 我的文本视图称为结果 和有效负载是我从服务器发送的消息

任何帮助将不胜感激

5 个答案:

答案 0 :(得分:0)

Update Textview from function Android how to change text in Android TextView

希望他们能提供帮助。 是否有理由不在这些情况下使用edittext?我是新手。

答案 1 :(得分:0)

我认为你需要留意你的通知ID。您发送消息,但所有消息都具有相同的通知ID。你应该以某种方式增加通知ID。

答案 2 :(得分:0)

在onNewIntent()方法中,你应该在Bundle extras = getIntent()之前使用setIntent(intent).getExtras();或额外的空白

onNewIntent()

中不需要

和setContentView(R.layout.activity_result)

答案 3 :(得分:0)

活动A中的

Intent mIntent = new Intent();  
        mIntent.setClass(mContext, MessageReceivedActivity.class);  

        mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  

        mIntent.putExtra("payload", "fdfsfnj");  
        mContext.startActivity(mIntent);  
活动MessageReceiver活动中的

    @Override  
        protected void onNewIntent(Intent intent)  
        {  

            String message  = intent.getData();  
            //Or you can use
            String message  = getIntent().getStringExtra("payload", ""); 
super.onNewIntent(intent);  
        }  

答案 4 :(得分:0)

所有遇到此问题的人。 我看了另一个堆栈溢出问题,这是答案。 在createNotification里面的消息接收器中添加这个

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,intent, 
            PendingIntent.FLAG_CANCEL_CURRENT);

不要忘记取消当前视图的结尾标志