appwidgetprovider上的findViewById错误

时间:2018-01-20 17:15:04

标签: java android

它没有显示来自互联网的文字,只显示000。

我想从互联网上获取文字并在小部件上显示。

但我还没有成功地工作。

这是代码(Java类):

import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.RemoteViews;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class simple_widget extends AppWidgetProvider {
    public void onCreateView(Context context, LayoutInflater inflater, ViewGroup container, Bundle   savedInstanceState) {
        try {
            // Create a URL for the desired page
            URL url = new URL("mysite.com/thefile.txt");

            // Read all the text returned by the server
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            String str;
            while ((str = in.readLine()) != null) {
                RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                        R.layout.activity_simple_widget);
                remoteViews.setTextViewText(R.id.textView, str);

            }
            in.close();
        } catch (MalformedURLException e) {
        } catch (IOException e) {
        }
    }
}

代码有什么问题?

2 个答案:

答案 0 :(得分:0)

您需要使用RemoteViews进行修改。您无法直接修改appwidget上的视图

Here是一些例子

答案 1 :(得分:0)

我认为您想在appWidgetProvider类中使用setText()。但是此类不允许findViewById()。为此,您需要使用RemoteView类的功能。

CharSequence Method | Android Developers

在您的情况下:

remoteViews.setCharSequence(R.id.textView,"setText",str);

它适用于EditText,TextView,TextClock。 您可以将String MethodName替换为方法的名称,例如getText,setText,setTimeZone等。

对于按钮,RemoteViews提供以下功能

setOnClickResponse | Android Developers

这等同于

View.setOnClickListener(android.view.View.OnClickListener)

类似地,现在可以使用许多其他方法,例如setFloat()setLong(),它们与setCharSequence()相同。

您可以根据要传递的参数的数据类型在它们之间进行选择。

这是用于了解和查看所有RemoteView功能列表的链接

RemoteViews | Android Developers

希望这会有所帮助