【问题标题】:Conflict support.v4.app.Fragment vs app.Fragment when using DatePickerDialog使用 DatePickerDialog 时冲突 support.v4.app.Fragment 与 app.Fragment
【发布时间】:2014-07-23 08:30:05
【问题描述】:

我真的不明白 support.v4 库发生了什么,但无论如何。我有一个片段,我实现在单击导航抽屉中的项目时打开它(android studio 的默认实现)。在这个片段中,我想打开一个 datePickerDialog 但我找不到它工作的解决方案。这是我的带有 datePicker 的片段:

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle; 
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.ListView;
import android.widget.Toast;

import java.util.Calendar;

public class SearchFragment extends Fragment {

private ListView listView;
private CustomAdapter activityAdapter;
private Button filterButton;

public SearchFragment(){}

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

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

    activityAdapter = new CustomAdapter(getActivity());

    listView = (ListView) rootView.findViewById(R.id.lvActivity);
    listView.setAdapter(activityAdapter);
    activityAdapter.loadObjects();
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            String activity = activityAdapter.getItem(position).get("activity").toString();
            Toast.makeText(getActivity(), activity, Toast.LENGTH_SHORT).show();
        }
    });
    filterButton = (Button) rootView.findViewById(R.id.bFilter);

    return rootView;
}

public void showDatePickerDialog(View v) {
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getSupportFragmentManager(), "datePicker");
}

public static class DatePickerFragment extends DialogFragment
        implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date chosen by the user
    }
}

}

我的问题出在这一行:newFragment.show(getSupportFragmentManager(), "datePicker");

我发现如果 Activity 没有扩展 Fragment 但我的 Activity 已经在扩展 ActionBarActivity,则会出现兼容性问题。我该怎么办?

【问题讨论】:

    标签: android android-fragments navigation-drawer android-support-library datepickerdialog


    【解决方案1】:

    不,你没有。你这里有错误的导入

      import android.app.DialogFragment;
    

    将其更改为使用支持库

    【讨论】:

    • 这似乎没有任何改变。
    • 您是否更改了 DialogFragment 导入以使用支持库(只是仔细检查)
    • 是的,我改成这一行:import android.support.v4.app.DialogFragment;
    • 奇怪的是你在同一行得到同样的错误。您可以尝试清理您的环境并重新构建它吗?
    • 我找到了解决方案。非常感谢!
    【解决方案2】:

    更改 import android.app.DialogFragment;

    android.support.v4.app.DialogFragment
    

    这将从支持包中导入 DialogFragment 类

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 2015-05-22
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多