2013-06-19 37 views
3

Error: appWidgetId (EXTRA_APPWIDGET_ID) was not returned from the \widget configuration activity.按HOME按鈕不會從配置活動

public class WidgetConfigure extends Activity { 

private int widgetID; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.v("Lifecycle", "WidgetConfigure.onCreate"); 
    setContentView(R.layout.widget_configure); 
    widgetID = this.getIntent().getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 
    setResult(RESULT_CANCELED, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID)); 
} 

public void onButtonClicked(View view) { 
    Log.v("Lifecycle", "WidgetConfigure.onButtonClicked"); 
    if (((RadioButton) this.findViewById(RefreshStrategy.SYSTEM)).isChecked()) { 
     WidgetProvider.configure(widgetID, true); 
    } else if (((RadioButton) this.findViewById(RefreshStrategy.USER)).isChecked()) { 
     WidgetProvider.configure(widgetID, false); 
    } 
    setResult(RESULT_OK, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID)); 
    finish(); 
} 
} 

理論上RESULT_OK應該在任何其他情況下按下活動按鈕和RESULT_CANCELED後發送回控件ID,但它不會發生HOME就當物理按鈕設備被按下。

任何想法如何解決這個問題?

回答

1

這不是你的代碼中的問題 - 這是正常的,標準的Android行爲。 (也許一個錯誤?)


我找不到它的記載,但如果你嘗試添加需要配置谷歌的窗口小部件,然後按HOME,你看到小部件沒有得到補充。我們可以以某種方式將HOME鍵視爲CANCEL按鈕。

我今天大部分時間都在想我自己的代碼中有一個bug,並尋找一種解決方法。

如果有任何問題,我相信這可能是框架中的一個錯誤,因爲結果根本沒有提供。另外,如果我從配置活動啓動新的Activity,然後從那裏退出,我也會遇到類似的故障。


FWIW我在Galaxy Nexus 4.2.1上看到這個錯誤信息;但在Nexus 7 4.4.2上沒有顯示錯誤,但行爲是相同的。


更新:根據戴安娜Hackborn,這是預期的行爲,從用戶的角度來看的角度至少:

對於將要提供 的應用程序插件的正常體驗配置用戶界面是從後退或回家將取消 添加。

所以,作爲一個開發者,這可能看起來很奇怪,但作爲一個用戶這一切工作了罰款到底。

+1

作爲一個用戶,它不能很好地發揮出來。許多用戶在小部件配置後按下主頁按鈕,並想知道爲什麼不添加小部件!我收到了這樣的查詢的百分之一。 – 3c71

+0

@ 3c71我個人同意,但我是誰來反對hackbod的智慧。 –