ボタンを含むウィジェット (AppWidget) を開発する必要があります。ボタンが押されると http リクエストが実行され、リクエストが成功した場合、ウィジェットはトーストを介してその事実を通知します。http リクエストは UI をロックできるため、スレッドで実行します。トースト通知を除いて、すべて正常に動作しています(ログに「大丈夫」と表示されます)。私は何を間違っていますか?
AppWidgetProvider サブクラスで:
@Override
public void onReceive(Context c, Intent intent){
super.onReceive(c, intent);
if(intent.getAction().equals(CLICK_ACTION)){
performRequest(c);
}
}
(質問のonUpdateメソッドは不要だと思います)
private void performRequest(final Context c){
new Thread(new Runnable(){
public void run() {
try {
if(Http.get(URL).contains(SUCCESS)){
Toast.makeText(c, "All right", Toast.LENGTH_SHORT).show();
Log.i("Widget","All right");
}
} catch (Exception e) {
e.printStackTrace();
}}}).start();
}
Context
問題は の引数だと思いますが、キーワードperformRequest
を外すとエラーが出ます。final
アドバイスありがとう。
[編集]
私はこの方法で問題を「解決」しました:
Toast t
-グローバル変数として宣言します。
- onReceive メソッド内で初期化しますToast.makeText(Context,String,int)
-表示する必要がある場合は、電話するだけですt.show()
より良い解決策があることを願っています。