android datepickerfragment 传递信息到main activity
android datepickerfragment transfer information to main activity
我是编程新手 android。我在使用 datePickerfragment 时遇到问题。在 mainActivity 上实现 DatePickerFragment.OnFragmentInteractionListener 时出错,它说“Class MainActivity 必须声明为抽象的或在 'OnFragmentInteractionListener'[=28= 中实现抽象方法 'returnDate(String)' ]."
我使用了 http://developer.android.com/guide/topics/ui/controls/pickers.html 中所示的 datePicker。
datePicker 有效,但我想将选择的值传输到 mainActivity,我在另一个 post:How to transfer the formatted date string from my DatePickerFragment? 中得到了一些提示。
我真的不知道我错过了什么。我还想知道是否可以传输日期值而不是字符串值。我想在 mainActivity 中操作日期。希望可以有人帮帮我。这是我的代码:
package com.example.android.datepickertest;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends FragmentActivity
implements DatePickerFragment.OnFragmentInteractionListener
{
private TextView dataSelecionada;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dataSelecionada = (TextView)findViewById(R.id.data_selecionada);
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
@Override
public void setTextDate (int year, int month, int day) {
TextView displayDataSelecionada = (TextView) findViewById(R.id.data_selecionada);
dataSelecionada.setText(day + "/" + month +"/" + year);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
和datePickerFragment:n
package com.example.android.datepickertest;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* {@link DatePickerFragment.OnFragmentInteractionListener} interface
* to handle interaction events.
* Use the {@link DatePickerFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
OnFragmentInteractionListener listener;
public interface OnFragmentInteractionListener {
public void returnDate(String date);
};
@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);
listener=(OnFragmentInteractionListener)getActivity();
// 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
Calendar c= Calendar.getInstance();
c.set(year,month,day);
SimpleDateFormat date = new SimpleDateFormat();
String dateSet = date.format(c.getTime());
if (listener !=null){
listener.returnDate(dateSet);
}
}
}
错误有答案,当你实现一个接口时,你应该实现接口中的所有方法。
在您的情况下,您的主要活动中没有方法 returndate。
1.Create 方法 returnDate 或者如果你使用 Android 工作室,只需转到文件 MainActivity 并将光标放在 'public class MainActivity' 上然后按 Alt+Enter,该方法将自动创建后,您将通过此方法在主活动中添加日期。
- 如果您需要日期而不是字符串,请将 returndate 方法的参数更改为 Date,并删除 Simpledateformat 而是使用
新日期 (c.getTime())
我是编程新手 android。我在使用 datePickerfragment 时遇到问题。在 mainActivity 上实现 DatePickerFragment.OnFragmentInteractionListener 时出错,它说“Class MainActivity 必须声明为抽象的或在 'OnFragmentInteractionListener'[=28= 中实现抽象方法 'returnDate(String)' ]."
我使用了 http://developer.android.com/guide/topics/ui/controls/pickers.html 中所示的 datePicker。
datePicker 有效,但我想将选择的值传输到 mainActivity,我在另一个 post:How to transfer the formatted date string from my DatePickerFragment? 中得到了一些提示。
我真的不知道我错过了什么。我还想知道是否可以传输日期值而不是字符串值。我想在 mainActivity 中操作日期。希望可以有人帮帮我。这是我的代码:
package com.example.android.datepickertest;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends FragmentActivity
implements DatePickerFragment.OnFragmentInteractionListener
{
private TextView dataSelecionada;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dataSelecionada = (TextView)findViewById(R.id.data_selecionada);
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
@Override
public void setTextDate (int year, int month, int day) {
TextView displayDataSelecionada = (TextView) findViewById(R.id.data_selecionada);
dataSelecionada.setText(day + "/" + month +"/" + year);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
和datePickerFragment:n
package com.example.android.datepickertest;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* A simple {@link Fragment} subclass.
* Activities that contain this fragment must implement the
* {@link DatePickerFragment.OnFragmentInteractionListener} interface
* to handle interaction events.
* Use the {@link DatePickerFragment#newInstance} factory method to
* create an instance of this fragment.
*/
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
OnFragmentInteractionListener listener;
public interface OnFragmentInteractionListener {
public void returnDate(String date);
};
@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);
listener=(OnFragmentInteractionListener)getActivity();
// 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
Calendar c= Calendar.getInstance();
c.set(year,month,day);
SimpleDateFormat date = new SimpleDateFormat();
String dateSet = date.format(c.getTime());
if (listener !=null){
listener.returnDate(dateSet);
}
}
}
错误有答案,当你实现一个接口时,你应该实现接口中的所有方法。
在您的情况下,您的主要活动中没有方法 returndate。
1.Create 方法 returnDate 或者如果你使用 Android 工作室,只需转到文件 MainActivity 并将光标放在 'public class MainActivity' 上然后按 Alt+Enter,该方法将自动创建后,您将通过此方法在主活动中添加日期。
- 如果您需要日期而不是字符串,请将 returndate 方法的参数更改为 Date,并删除 Simpledateformat 而是使用
新日期 (c.getTime())