嗨我想知道爲什麼在我的應用程序中更新按鈕的文本行爲有所不同。更新按鈕上的文字
我調用一個片段來獲取信息,該按鈕應該更新,我從片段中進行接口回調以更新活動更新按鈕文本的全局變量。
問題是,按鈕所在的活動不刷新按鈕來顯示新的文本,但如果我通過它的工作片段來做到這一點,使按鈕無效或強制刷新,如果我做它通過活動。
下面是當你按下按鈕誰然後調用誰顯示一個列表,當你點擊一個選項按鈕應該改變它的文本,無論你已選用片段調用活動:
public void onClick_testSite(View view)
{
// create the fragment
SelectChartTypeDialogFragment chartType = new SelectChartTypeDialogFragment();
// register you as a delegate for the callback
chartType.delegate = this;
// show the list
chartType.show(getFragmentManager(), "WEE");
// fetch the button and set the text ** DOESNT WORK **
Button p1_button = (Button)findViewById(R.id.btn_pickChart);
p1_button.setText(response);
p1_button.invalidate();
}
@Override
public void processFinish(String response)
{
this.response = response;
}
這裏是處理對話框中的片段的一部分:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
// get the list from a enum
final List<ChartTypes> chartList = Arrays.asList(ChartTypes.values());
// The array containing the different choices
ArrayAdapter<ChartTypes> adapter = new ArrayAdapter<ChartTypes>(
getActivity(), android.R.layout.simple_list_item_1, chartList);
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// The dialog setting
builder.setTitle(R.string.pick_chart);
builder.setAdapter(adapter, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int position)
{
// get the name of the enum based on the position, what one
// clicked on the dialog
String strName = chartList.get(position).name();
// this sets the text in the activitys global variable
delegate.processFinish(strName);
// set the text in the fragment instead
//changeBtnText(strName);
//dialog.dismiss();
}
});
// Create the AlertDialog object and return it
return builder.create();
}
public void changeBtnText(String newBtnxt)
{
Button button = (Button)getActivity().findViewById(R.id.btn_pickChart);
button.setText(newBtnxt);
}
我的問題是,爲什麼它更新GUI上的文本通過碎片而不是通過活動(運行應用程序時),即方法p1_button.setText(響應);?通過Raghunandan作爲解釋
編輯答案: 問題是,我不明白,onClick_testSite(View view)
完成,即使你沒有點擊該對話框上的任何東西,我認爲這與chartType.show()
函數調用等待它返回,然後繼續執行該功能的結尾。
你可以顯示片段代碼已滿嗎? – Raghunandan
那裏我已更新代碼 – Kkloe
好的檢查我的編輯。它應該工作。我希望你已經有一個名爲AsyncRespone的接口。 – Raghunandan