它没有显示来自互联网的文字,只显示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) {
}
}
}
代码有什么问题?
答案 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
希望这会有所帮助