0

少し複雑なフォームを使用してAndroidタブレットアプリケーションに取り組んでいます(レイアウトにはListViewがあり、フォームが含まれているレイアウトがあるため、EditTextを膨らませる必要があります)。私の考えは、日付が表示されている TextView をクリックすると、DataPicker がダイアログに表示されるということです。

問題は、クリックが検出されないことです。ログはありません。

ジャワ:

    public static EditText datep;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.admissions_all);

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);

        View inf = LayoutInflater.from(getApplicationContext()).inflate(R.layout.admissions, null);
        datep = (EditText) inf.findViewById(R.id.date_value);

        datep.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Log.i("Date", "You clicked me mate!");
                showDatePickerDialog(v);
            }
        });

    }

    public void showDatePickerDialog(View v) {
        DialogFragment newFragment = new DatePickerFragment();
        newFragment.show(getFragmentManager(), "datePicker");
        Log.i("Date", "I want to show datePicker");
    }

    public static class DatePickerFragment extends DialogFragment
    implements DatePickerDialog.OnDateSetListener {

        @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);
        }

        public void onDateSet(DatePicker view, int year, int month, int day) {
             datep.setText(day + "." + month+ "." + year);
        }
    }

XML:

<RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/general"
        android:layout_alignRight="@id/general"
        android:layout_below="@+id/general"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp" >

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:text="Data"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <View
            android:id="@+id/line"
            android:layout_width="wrap_content"
            android:layout_height="1dp"
            android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
            android:layout_below="@+id/title"
            android:background="#333333" />

        <EditText
            android:id="@+id/date_value"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/line"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:layout_toRightOf="@+id/date_desc"
            android:ems="9"
            android:inputType="date" >
        </EditText>

        <TextView
            android:id="@+id/date_desc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/date_value"
            android:layout_alignBottom="@+id/date_value"
            android:layout_alignParentLeft="true"
            android:text="Date:"
            android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

私はこれに従いました:http://developer.android.com/guide/topics/ui/controls/pickers.html

4

3 に答える 3

0

何も表示されませんでしたdateup.setclickable(true);。これを追加してみてください。onlciklistner たぶんそれが機能しない理由です、それが呼び出されるかどうかをデバッグして確認することもできます

あなたがこのようなことを書いているのを見ました。

datep = (EditText) inf.findViewById(R.id.date_value);

あなたがこれを持っているとき

setContentView(R.layout.admissions_all);

これは、あなたeditTextが別のアクティビティにいることを意味しますが、彼を別のアクティビティに設定しているonclickListnerため、機能しません。アクティビティで彼を初期化しonlcikListnerます。そのコンテンツビューはinf.xmlです。これらすべてが役に立たない場合は、コードの一部を追加してください

よろしくHaykNahapetyan

于 2012-12-22T14:26:33.887 に答える
0

DatePickerFragmentをDatePickerDialogに変更できますか。次に、DatePickerDialog.show();を実行します。何かのようなもの :

DatePickerDialog datePickerDialog = null;
datep.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Log.i("Date", "You clicked me mate!");
            showDatePickerDialog();
        }
    });

private void showDatePickerDialog() {
    datePickerDialog = new DatePickerDialog(context, new DateSetListener(), year, month, day);
    datePickerDialog.show();
}
于 2013-01-17T17:34:19.207 に答える
0

タッチ モードでの date_value の focusable を false に設定する必要があります。android:focusableInTouchMode="false"これを行うには、xmlに追加するか、コードにdatep.setFocusableInTouchMode(false);. これにより、オンクリックイベントが発生するはずです。(エミュレータでテスト済み)

参照:ユーザーが EditText をクリックした後に何かを行う方法

参考:http ://android-developers.blogspot.com/2008/12/touch-mode.html

于 2012-12-22T14:12:57.587 に答える