1

我有一个小部件和一个活动,当我开始活动时,我必须从小部件的TextView中读取文本并将其显示在活动的TextWidget中。如何从活动中获取Widget的TextView文本?

我的相关代码:

String frase=""; 
TextView text_frase = (TextView) findViewById(R.id.widget_textview_frase); 
if (text_frase != null){ 
    frase = (String) text_frase.getText(); 
} 
Log.v(LOG_CLASS_NAME, "frase: "+frase); 

调试它 - 我有text_frase为空(我想我不能从另一个视图参考的视图对象。)无论如何,我怎么能做到这一点?

+0

你是从活动1调用活性2?如果是的话,你需要将它传递束 – kosa 2012-03-03 00:25:55

+0

谢谢...但你叫什么活动1是一个小部件。 ..我准备一个待决的意图......所以我不能。而且......我需要在活动开始时获得内容。 – 2012-03-03 00:33:10

回答

4

不,你不能。我建议以下方法之一:

  1. 将您的文本添加到捆绑并在您的活动中获取它。

在你的widget:

Intent intent = new Intent(context, YourActivity.class); 
Bundle b= new Bundle(); 
b.putString("Text", yourtext); 
intent.putExtras(b); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

您的活动:

Intent intent=getIntent(); 
Bundle b= intent.getExtras(); 
String text= b.getString("Text", ""); 
  • 使用SharedPreferences保存文本并在活动中加载它。
  • 在你的情况,我建议的方法1.

    +0

    很好...我认为sharedPreferences是最好的方法...第一个不好,因为我有一个更新TextView的contento的服务。 – 2012-03-11 10:48:22

    0

    您可能希望通过使用TextView上的.toString()方法来获取实际的字符串。

    String frase; 
    
    TextView text_frase = (TextView) findViewById(R.id.widget_textview_frase); 
    if (text_frase.getText().toString() != null){ 
        frase = (String) text_frase.getText().toString(); 
        Log.v(LOG_CLASS_NAME, "frase: "+frase); 
    } 
    
    +0

    谢谢......但TextView叫** text_frase **为空...(正如我在答案中写的...)我想我无法从活动中使用** findViewById **查找小部件的视图。 – 2012-03-03 07:32:27

    相关问题