Объявление Intent Filter в Android - PullRequest
1 голос
/ 08 апреля 2010

У меня проблема с объявлением намерений в моем приложении. У меня есть форма с текстовыми полями и счетчик. Я добавил кнопку, на которой должен отображаться DatePicker. Я объявил DatePicker как новый класс и добавил в намерение onCLick.

date.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) 
    {
        Intent i=new Intent(SendMail.this,DatePicker.class);

        startActivity(i);

    }
});

В декларации я объявил

<activity android:name=".DatePicker">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Теперь проблема в том, что когда я нажимаю кнопку, вся форма сбрасывается и все значения счетчика исчезают. Это должно быть из-за неправильного объявления цели. Итак, кто-нибудь может указать, как объявить мои намерения, чтобы DatePicker вызывался в главной форме

1 Ответ

1 голос
/ 08 апреля 2010

Вам не нужно новое действие для результата выбора даты.

Создайте в своем классе SendMail эти компоненты ...

public class SendMail extends Activity {

 static final int DATE_DIALOG_ID = 1;

 // date and time
 private int mYear;

 private int mMonth;

 private int mDay;

 public void launchSetDate() {
        showDialog(DATE_DIALOG_ID);
 }
 @Override
 protected Dialog onCreateDialog(int id) {
        switch (id) {

            case DATE_DIALOG_ID:
                return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay);
        }
        return null;
 }
 @Override
 protected void onPrepareDialog(int id, Dialog dialog) {
        switch (id) {
            case DATE_DIALOG_ID:
                ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
                break;
        }
 }
  private DatePickerDialog.OnDateSetListener mDateSetListener = new  DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;
            // do something with the result
        }
    };
}

Тогда вместо запуска startActivityВы вызываете метод launchSetDate();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...