我正嘗試使用小部件創建應用程序。當用戶將小部件放置在桌面上時,列表視圖應該出現一個項目列表。用戶選擇一個項目,然後使用與該項目相關的相應文本創建小部件。我想我應該通過顯示在服務對話框中做到這一點,但它拋出我服務中的Android錯誤:「無法添加窗口 - 令牌null不適用於應用程序」
產生的原因:android.view.WindowManager $ BadTokenException:無法添加 窗口 - 令牌null不是一個應用程序
to the dialog_newitem.show();線。爲了簡單起見,我現在使用一個簡單的alertdialog。
難道是這樣做的嗎?我沒有在網上發現任何關於此的消息。
public class UpdateWidgetService extends Service {
private static final String LOG = "de.vogella.android.widget.example";
public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
String value;
Dialog dialog_newitem;
EditText et_newitem;
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "UpdateWidgetService", Toast.LENGTH_SHORT).show();
dialog_newitem = new Dialog(this); //I tried UpdateWidgetService.this, too
dialog_newitem.setContentView(R.layout.dialog_productlists_grp_capitalized);
dialog_newitem.setTitle("Select");
dialog_newitem.setCancelable(true);
et_newitem = (EditText) dialog_newitem.findViewById(R.id.et_item_name);
Button btn_Save = (Button) dialog_newitem.findViewById(R.id.btn_save_pr);
btn_Save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
value = et_newitem.getText().toString();
}
});
Button btn_Cancel = (Button) dialog_newitem.findViewById(R.id.btn_cancel_pr);
btn_Cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog_newitem.dismiss();
}
});
dialog_newitem.show(); //error
Toast.makeText(this, "value: " + value, Toast.LENGTH_SHORT).show();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
我已經使用這個alertdialog在代碼的其他部分,它就在那裏工作的罰款。我認爲這與該服務有關。
謝謝,我不知道 – erdomester