100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android activity获取dialog对象 Android:从DialogFragment调用Activity的功能

android activity获取dialog对象 Android:从DialogFragment调用Activity的功能

时间:2024-08-03 23:16:05

相关推荐

android activity获取dialog对象 Android:从DialogFragment调用Activity的功能

我在从DialogFragment调用我的Activity函数时遇到问题.我的MainActivity中有一些公共函数,我需要调用这些函数才能在DialogFragment中完成一些计算.每次我尝试使用getActivity()调用函数时.出现问题“无法解决方法”.

这是我在MainActivity中调用DialogFragment的方式:

FragmentManager fm = getSupportFragmentManager();

DialogWeekly dialogWeekly = new DialogWeekly();

dialogWeekly.show(getFragmentManager(), "fragment_dialogWeekly");

这就是DialogFragment的样子.我在出现上述问题的地方添加了两个注释行:

public class DialogReminder extends DialogFragment implements AdapterView.OnItemSelectedListener {

//--- Static Variables -----------------------------------------------------------------------//

private static final String MY_PREFS = "my_preferences";

private static Activity activity;

private static TimePicker timePicker;

private static View dialogReminderView;

//--- Integer Variables ----------------------------------------------------------------------//

private Integer weekday;

//--- String Variables -----------------------------------------------------------------------//

private String weekdayString;

//--- Other Variables ------------------------------------------------------------------------//

private SharedPreferences sharedPreferences;

/**

* Empty constructor required for DialogFragment

*/

public DialogReminder() { }

/**

* Called when a fragment is first attached to its activity.

* onCreate(Bundle) will be called after this

* @param activity Activity that is attached to this fragment

*/

public void onAttach(Activity activity) {

super.onAttach(activity);

}

//--- Override Functions ---------------------------------------------------------------------//

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

return inflater.inflate(R.layout.dialog_weekly, container);

}

@NonNull

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

sharedPreferences = getActivity().getSharedPreferences(MY_PREFS, Context.MODE_PRIVATE);

return createAlertDialog();

}

@Override

public void onItemSelected(AdapterView> parent, View view, int pos, long id) {

Integer selectedItem = parent.getSelectedItemPosition();

weekdayString = parent.getItemAtPosition(pos).toString();

// Here is the problem: savePreferences -> cannot resolve method

getActivity().savePreferences("spinnerSelectionWeekday", String.valueOf(selectedItem));

weekday = selectedItem + 2;

if (weekday == 8) {

weekday = 1;

}

}

@Override

public void onNothingSelected(AdapterView> parent) {

// Another interface callback

}

//--- General Activity Functions -------------------------------------------------------------//

/**

*

* @return

*/

private AlertDialog createAlertDialog() {

AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());

alert.setTitle(getResources().getString(R.string.optionReminder));

alert.setView(dialogReminderView);

alert.setNegativeButton(getResources().getString(R.string.cancel), new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

}

});

alert.setPositiveButton(getResources().getString(R.string.ok), new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

setReminder();

dialog.cancel();

}

});

setElementsGUI();

return alert.create();

}

/**

*

*/

private void setElementsGUI() {

Spinner spinner = (Spinner) dialogReminderView.findViewById(R.id.reminderWeekdaySpinner);

ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(),

R.array.reminderSpinnerArray, android.R.layout.simple_spinner_item);

// Specify the layout to use when the list of choices appears

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setOnItemSelectedListener(this);

spinner.setAdapter(adapter);

spinner.setSelection(Integer.parseInt(sharedPreferences.getString("spinnerSelectionWeekday", "0")));

}

//--- Button Functions -----------------------------------------------------------------------//

/**

*

*/

private void setReminder() {

// Here is the problem: all functions with getActivity() -> cannot resolve method

getActivity().checkReminder();

getActivity().setWeekdayReminder(weekday);

getActivity(("hour", String.valueOf(timePicker.getCurrentHour()));

getActivity().savePreferences("minute", String.valueOf(timePicker.getCurrentMinute()));

getActivity().checkReminder();

String hour = String.valueOf(getActivity().getHour());

if (hour.length() < 2) {

hour = "0" + hour;

}

String minute = String.valueOf(getActivity().getMinute());

if (minute.length() < 2) {

minute = "0" + minute;

}

String time = hour + ":" + minute;

String message = getResources().getString(R.string.reminderToast, weekdayString, time);

Toast toast = Toast.makeText(getActivity().getApplicationContext(), message, Toast.LENGTH_LONG);

toast.show();

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。