如何在 fragment 中添加日期选择器?
我在 SO 上找到了一些答案,展示了如何使用 DialogFragment 来拥有 DatePicker。但是当我将 getSupportFragmentManager() 添加到我的 fragmnet 时,它会出错。
请帮帮我...
public class Fragment_addStudentDetails extends Fragment implements View.OnClickListener {
EditText fName,mName, Address, sName, hNo, mNo, presentSpo;
Button save;
DatabaseAdapter databaseHelper;
private ImageButton ib;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_add_student_details,container,false);
fName = (EditText) view.findViewById(R.id.enterFname);
mName = (EditText) view.findViewById(R.id.enterMname);
sName = (EditText) view.findViewById(R.id.enterSureName);
Address =(EditText) view.findViewById(R.id.enterAddress);
hNo = (EditText) view.findViewById(R.id.entertph);
mNo = (EditText) view.findViewById(R.id.entertpm);
presentSpo = (EditText) view.findViewById(R.id.enterpres_sport);
save = (Button) view.findViewById(R.id.btnsavefrag);
save.setOnClickListener(this);
databaseHelper = new DatabaseAdapter(getActivity());
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnsavefrag:
addStudent(v);
break;
case 1:
break;
}
}
public void showDatePickerDialog(View v) {
new DatePickerFragment((EditText) v).show(getSupportFragmentManager(), "datePicker");
}
public void addStudent(View view){
String fname = fName.getText().toString();
String mname = mName.getText().toString();
String sname = sName.getText().toString();
String address = Address.getText().toString();
String TPhome = hNo.getText().toString();
String TPmobile = mNo.getText().toString();
String presentsport = presentSpo.getText().toString();
long id= databaseHelper.insertData(fname, mname, sname, address, TPhome, TPmobile, presentsport);
if(id<0){
Message.message(getActivity(),"Error inInsertiong Data");
}else
{
Message.message(getActivity(),"Succecsfuly inserted to data");
}
}
public void viewDetails(View view){
String data = databaseHelper.getAllData();
Message.message(getActivity(),data);
}
}
我的日期选择器 Fragmnet 类
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public EditText activity_edittext;
public DatePickerFragment(EditText edit_text) {
activity_edittext = edit_text;
}
@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);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
activity_edittext.setText(String.valueOf(month + 1 ) + "/" + String.valueOf(day) + "/" + String.valueOf(year));
}
}
Activity 类
public class Group_Add_Details_menu extends Activity{
Fragment fragment;
Button btnFragment1, btnFragment2, btnFragment3, btnFragment4;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_detal_menu);
btnFragment1 = (Button)findViewById(R.id.btn1);
btnFragment2 = (Button)findViewById(R.id.btn2);
btnFragment3 = (Button)findViewById(R.id.btn3);
btnFragment4 = (Button)findViewById(R.id.btn4);
btnFragment1.setBackgroundResource(R.drawable.add_sbutton_pressed);
btnFragment2.setBackgroundResource(R.drawable.add_tbutton_pressed);
btnFragment3.setBackgroundResource(R.drawable.add_pbutton_pressed);
btnFragment4.setBackgroundResource(R.drawable.view_button_pressed);
// get an instance of FragmentTransaction from your Activity
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//add a fragment
Fragment_addStudentDetails myFragment = new Fragment_addStudentDetails();
fragmentTransaction.add(R.id.myfragment, myFragment);
fragmentTransaction.commit();
btnFragment1.setOnClickListener(btnFragmentOnClickListener);
btnFragment2.setOnClickListener(btnFragmentOnClickListener);
btnFragment3.setOnClickListener(btnFragmentOnClickListener);
btnFragment4.setOnClickListener(btnFragmentOnClickListener);
}
Button.OnClickListener btnFragmentOnClickListener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
Fragment newFragment;
// Create new fragment
if(v == btnFragment1){
newFragment = new Fragment_addStudentDetails();
}else{
newFragment = new Group_Add_test();
}
// Create new transaction
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.myfragment, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
}};
}
最佳答案
cannot resolve method 'getSupportFragmentManager()'
这意味着您正在使用不同类型的 fragment ,它是 android 的默认 fragment
,而不是支持库支持 fragment >.
解决方法:
确保您的导入看起来像这样:
import android.support.v4.app.Fragment;
编辑:
由于您使用的是 Activity
这是默认的 android Activity 而不是支持您需要使用 getFragmentManager()
而不是 getSupportFragmentManager()
关于android - 在 fragment 中添加日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25578510/