如何从活动中获取Widget的TextView文本?

时间:2012-03-03 00:22:00

标签: android android-widget android-activity textview

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

我的相关代码:

 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为null(我想我不能从另一个视图引用一个视图对象。)无论如何,我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

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

  1. 将文字添加到Bundle并在活动中提取。
  2. 在您的小部件中

    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", "");
    
    1. 使用SharedPreferences保存文本并将其加载到活动中。
    2. 在您的情况下,我建议使用方法1.

答案 1 :(得分:0)

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

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);
}