Как я могу достать дату в всплывающем окне из моей основной деятельности? - PullRequest
1 голос
/ 20 декабря 2011

Я не могу найти информацию о том, как добраться до средства выбора даты во всплывающем окне из основного занятия. Когда я вызываю findIdByView (), чтобы получить указатель даты, программа просматривает макет main. Но указатель даты определяется во всплывающем окне. Как мне туда добраться?

Мне просто нужно иметь возможность получить значение средства выбора даты, когда всплывающее окно снова закрывается.

Это мой метод создания и закрытия всплывающего окна:

public void onSelectDayClick(View view)
{
    if(popup.isShowing())
    {
        //DatePicker datepicker = (DatePicker) this.findViewById(R.id.datePicker); (doesn't work)
        int year = datepicker.getYear();
        int month = datepicker.getMonth();
        int day = datepicker.getDayOfMonth();
        ;displayday = new DateTime(year, month, day, 12, 00);
        popup.dismiss();
        ;newDay();
        LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); 
        popup = new PopupWindow(inflater.inflate(R.layout.dateselect, null, false),LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    }

    else
    {
        popup.showAtLocation(this.findViewById(R.id.scrollView), Gravity.BOTTOM, 0, 150);
    }
}

Мой xml-файл: (dateselect.xml)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:padding="10dip" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" >
<DatePicker
    android:id="@+id/datePicker"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center" />
</LinearLayout> 

Thankx

Ответы [ 3 ]

1 голос
/ 10 апреля 2013

Просто используйте layout.findViewById вместо this.findViewById, также всплывающее окно необходимо определить перед проверкой, показывает ли он, я предлагаю поместить его в onCreate

private Object datepicker;
private View layout;


protected void onCreate(Bundle savedInstanceState) {
    ...
    LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
    layout = inflater.inflate(R.layout.dateselect, null, false);
    popup = new PopupWindow(layout,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
}
public void onSelectDayClick(View view)
{
    if(popup.isShowing())
    {
        DatePicker datepicker = (DatePicker) layout.findViewById(R.id.datePicker); 
        int year = datepicker.getYear();
        int month = datepicker.getMonth();
        int day = datepicker.getDayOfMonth();
     //   ;displayday = new DateTime(year, month, day, 12, 00);*/
        popup.dismiss();
     //   ;newDay();


    }

    else
    {
        popup.showAtLocation(this.findViewById(R.id.myTextView), Gravity.BOTTOM, 0, 150);
    }
}
1 голос
/ 20 декабря 2011

Я думаю, что это поможет вам: http://developer.android.com/resources/tutorials/views/hello-datepicker.html

Кроме того, попробуйте использовать намерения, вот несколько советов: Как передать значения из одного занятия в предыдущее занятие

0 голосов
/ 08 июня 2013

Ответ от adax2000 сделал работу за меня.Всплывающее окно работает отлично.

Не уверен, какова цель объявления Object datepicker; вверху, так как оно никогда не используется, и если его не использовать, то оно прекрасно работает.

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