简体   繁体   English

showdialog()无法分段工作

[英]showdialog() not working in fragment

I have a datepicker dialog and listview. 我有一个日期选择器对话框和列表视图。 And I wanted the dialog to show up when onclick but the method in onClick for showdialog() got deprecated. 我希望在onclick时显示对话框,但是不推荐使用onClick中的showdialog()方法。 I got no idea where my error is. 我不知道我的错误在哪里。

Any idea how to solve it? 知道如何解决吗?

fragment.class 片段类

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class RankingFragment extends Fragment implements View.OnClickListener {

    private ImageView iv;
    private Calendar cal;
    private int day;
    private int month;
    private int year;
    private EditText et;

    String[] member_names;
    TypedArray profile_pics;
    String[] statues;
    static final String TAG_IMAGES = "images";
    List<RankingRowItem> rankingRowItems;
    ListView mylistview;
    View rootView;

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

        View rootView = inflater.inflate(R.layout.fragment_ranking, container, false);

        iv = (ImageView) rootView.findViewById(R.id.imageView1);
        cal = Calendar.getInstance();
        day = cal.get(Calendar.DAY_OF_MONTH);
        month = cal.get(Calendar.MONTH);
        year = cal.get(Calendar.YEAR);
        et = (EditText) rootView.findViewById(R.id.editText);
        iv.setOnClickListener(this);

        rankingRowItems = new ArrayList<RankingRowItem>();
        member_names = getResources().getStringArray(R.array.Member_names);
        profile_pics = getResources().obtainTypedArray(R.array.profile_pics);
        statues = getResources().getStringArray(R.array.statues);

        for (int i = 0; i < member_names.length; i++) {
            RankingRowItem item = new RankingRowItem(member_names[i],
                    profile_pics.getResourceId(i, -1), statues[i]);
                    rankingRowItems.add(item);
        }

        mylistview = (ListView) rootView.findViewById(R.id.list);
        RankingCustomAdapter adapter = new RankingCustomAdapter(getActivity(), rankingRowItems);
        mylistview.setAdapter(adapter);
        profile_pics.recycle();

        return rootView;
    }

    @Override
    public void onClick(View v)
    {
        getActivity().showDialog(0);
    }

    @Deprecated
    protected Dialog onCreateDialog(int id) {
        return new DatePickerDialog(getActivity(), datePickerListener, year, month, day);
    }

    private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int selectedYear,
                              int selectedMonth, int selectedDay) {
            et.setText(selectedDay + " / " + (selectedMonth + 1) + " / "
                    + selectedYear);
        }
    };
}

I think you need to impelement 我认为你需要障碍

protected Dialog onCreateDialog(int id) {
    return new DatePickerDialog(getActivity(), datePickerListener, year, month, day);
}

inside the Activity you are calling showDialog() on. 活动中,您正在调用showDialog()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM