我正在使用片段并尝试制作一个表格,我可以使用datepicker获取日期后将其存储在数据库中(现在没有问题)问题是我正在按照指南学习如何使用datepicker碎片活动。我得到了一对问题(和错误) 我一直在使用This guide
我得到了这个错误:
“对于类型”
,方法getSupportFragmentManager未定义
我读过“片段”中没有getSupportFragmentManager,但它们位于“FragmentActivity”中
“碎片”中有一个等效的方法?或者我应该做什么。
我正在搜索和阅读很多指南,但这是我找到并且遇到这个问题的简单方法。
我将发布我的Fragment类,片段xml和datepickerfragment
FragmentClass(regventa_Fragment)..
public class Regventa_Fragment extends Fragment {
public Button guardar;
public Button fecha_button;
public Regventa_Fragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_regventa, container, false);
Toast.makeText(getActivity(), "Hola", Toast.LENGTH_SHORT).show();
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
guardar=(Button)getView().findViewById(R.id.guardar);
//fecha_button=(Button)getView().findViewById(R.id.fecha_button);
getView().findViewById(R.id.fecha_button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePicker();
}
private void showDatePicker() {
// TODO Auto-generated method stub
}
});
}
private void showDatePicker() {
DatePickerFragment date = new DatePickerFragment();
/**
* Set Up Current Date Into dialog
*/
Calendar calender = Calendar.getInstance();
Bundle args = new Bundle();
args.putInt("year", calender.get(Calendar.YEAR));
args.putInt("month", calender.get(Calendar.MONTH));
args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
date.setArguments(args);
/**
* Set Call back to capture selected date
*/
date.setCallBack(ondate);
date.show(getFragmentManager(), "Date Picker");
}
OnDateSetListener ondate = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
}
};
}
fragment_regventa.XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginTop="10dp"
android:layout_marginBottom="15dp"
android:gravity="center_horizontal" >
<Button
android:id="@+id/guardar"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/guardar" />
<Button
android:id="@+id/borrar"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/borrar" />
</LinearLayout>
<Button
android:id="@+id/fecha_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/fecha_venta"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:text="@string/fecha_button" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/regventa"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/comprador"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="@string/comprador" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/fecha_venta"
style="android:editTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/fecha_button"
android:layout_below="@+id/comprador"
android:layout_marginTop="17dp"
android:ems="10"
android:hint="@string/fecha_venta"
android:textAlignment="center"
android:textSize="17sp" />
<EditText
android:id="@+id/elevendidos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/pesoventa"
android:layout_below="@+id/pesoventa"
android:layout_marginTop="24dp"
android:ems="10"
android:hint="@string/elementos_vendidos"
android:inputType="number" />
<EditText
android:id="@+id/pesoventa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/comprador"
android:layout_below="@+id/fecha_button"
android:layout_marginTop="14dp"
android:ems="10"
android:hint="@string/pesoventa" />
DatePicker Fragmentent
public class DatePickerFragment extends DialogFragment {
OnDateSetListener ondateSet;
public DatePickerFragment() {
}
public void setCallBack(OnDateSetListener ondate) {
ondateSet = ondate;
}
private int year, month, day;
@Override
public void setArguments(Bundle args) {
super.setArguments(args);
year = args.getInt("year");
month = args.getInt("month");
day = args.getInt("day");
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new DatePickerDialog(getActivity(), ondateSet, year, month, day);
}
}
如果我从“Fragment”改为“FragmentActivity”那么这会很好吗?我有其他片段吗?..谢谢
答案 0 :(得分:1)
getSupportFragmentManager()适用于android支持库
这意味着
如果使用支持库,则必须使用getSupportFragmentManager() 否则你必须使用getFragmentManager()
验证检查您的导入
import android.support.v4.app.Fragment; 意味着您使用支持库 那么你必须使用getSupportFragmentManager()
导入android.app.Fragmentment 意味着你使用本机库 那么你必须使用getFragmentManager()
Gud Luck:)
答案 1 :(得分:1)
我解决了问题..我正在使用
import android.support.v4.app.Fragment
而不是......
import android.app.Fragment;
在DatepickerFragment中。
之后我用...
date.show(getActivity().getFragmentManager(), "Date Picker");
谢谢
答案 2 :(得分:0)
首先,你需要了解FragmentActivity和amp;之间的差异。分段。 FragmentActivity是Activity&amp;的子类。活动持有Fragment&amp;两个是不同的东西。 请参阅以下链接&amp;看看该片段不会从Activity继承。
因此,如果你需要使用getSupportFragmentManager(),那么首先调用包含片段&amp;的活动。调用fragmentManager。喜欢:getActivity().getSupportFragmentManager()
另一件事是,如果您使用支持库中的Fragment,那么您会得到“getSupportFragmentManager()
”其他明智的“getFragmentManager()
”
由于