2014-08-30 12 views
6

मेरे पास दो संपादन टेक्स्ट फ़ील्ड्स के साथ एक खोज गतिविधि है। मुझे संपादन टेक्स्ट पर क्लिक करने के लिए दिनांक पिकर संवाद पर क्लिक करना पसंद है। हालांकि जब मैं संपादन टेक्स्ट पर क्लिक करता हूं, तो पहले कीबोर्ड दिखाया जाता है, फिर दूसरा पिकर संवाद दिखाया जाता है। क्या कोई मेरी मदद कर सकता है?संपादन टेक्स्ट पर दिनांक पिकर संवाद शो डबल क्लिक करें

यहाँ गतिविधि कोड

package com.example.firstdemoapp.activities; 

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Locale; 

import com.example.firstdemoapp.R; 
import com.example.firstdemoapp.model.StatusDK; 

import android.app.Activity; 
import android.app.DatePickerDialog; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.DatePicker; 
import android.widget.EditText; 
import android.widget.Spinner; 

public class SearchingTaxActivity extends Activity implements OnClickListener, 
    DatePickerDialog.OnDateSetListener, OnItemSelectedListener { 

private Calendar calendarFrom; 
private Calendar calendarTo; 
private String myFormat; 
private SimpleDateFormat sdf; 
private EditText dateFrom; 
private EditText dateTo; 

private EditText activeEditText; 
private Calendar activeCalendar; 

private Spinner spinnerStatusDK; 
private ArrayAdapter spinnerArrayAdapter; 

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

    calendarFrom = Calendar.getInstance(); 
    calendarTo = Calendar.getInstance(); 
    myFormat="dd/MM/yyyy"; 
    sdf = new SimpleDateFormat(myFormat, Locale.US); 

    dateFrom = (EditText) findViewById(R.id.dateFrom); 
    dateTo = (EditText) findViewById(R.id.dateTo); 
    spinnerStatusDK=(Spinner)findViewById(R.id.spinnerStatusDK); 
    spinnerArrayAdapter = new ArrayAdapter(this, 
       android.R.layout.simple_spinner_item, new StatusDK[] { 
        new StatusDK(0, "0"), 
        new StatusDK(1, "1"), 
        new StatusDK(2, "2"), 
        }); 

    spinnerStatusDK.setAdapter(spinnerArrayAdapter); 
    spinnerStatusDK.setOnItemSelectedListener(this); 
    dateFrom.setOnClickListener(this); 
    dateTo.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if (v == dateFrom) { 
     activeCalendar = calendarFrom; 
     activeEditText = dateFrom; 
    } else if (v == dateTo) { 
     activeCalendar = calendarTo; 
     activeEditText = dateTo; 
    } 
    new DatePickerDialog(SearchingTaxActivity.this, this, 
      activeCalendar.get(Calendar.YEAR), 
      activeCalendar.get(Calendar.MONTH), 
      activeCalendar.get(Calendar.DAY_OF_MONTH)).show(); 



} 

@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, 
     int dayOfMonth) { 
    // TODO Auto-generated method stub 
    activeCalendar.set(Calendar.YEAR, year); 
    activeCalendar.set(Calendar.MONTH, monthOfYear); 
    activeCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 

    if (activeEditText != null) { 
     activeEditText.setText(sdf.format(activeCalendar.getTime())); 
    } 

} 

@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
     long arg3) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

} 

}

और गतिविधि के लिए लेआउट है:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="${relativePackage}.${activityClass}" > 

<TextView android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/dateFromTextView" 
      /> 
<EditText 
    android:id="@+id/dateFrom" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:hint="@string/edit_datefrom" 
    /> 

<TextView android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/dateToTextView" 
      /> 
<EditText 
    android:id="@+id/dateTo" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:hint="@string/edit_dateto" 
    /> 

<Spinner 
    android:id="@+id/spinnerStatusDK" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

उत्तर

30

मैंने एंड्रॉइड जोड़ा: xml फ़ाइल में संपादन टेक्स्ट के लिए focusableInTouchMode = "false" और इससे मुझे मदद मिली। क्योंकि पहली फोकस घटना निकाल दी जाती है, और फिर ईवेंट को निकाल दिया जाता है।

0

यदि आप कीबोर्ड InputMethodManager वर्ग

का उपयोग कर छिपाने की कोशिश कर सकते हैं
private void hideKeyboard(EditText et) { 
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(et.getWindowToken(), 0); 
} 
+0

मेरे समस्या मैं पाठ संपादित करें पर दो बार क्लिक करने के लिए दिनांक पिकर संवाद – vikifor

+0

दिखाने के लिए यह संभव है पसंद नहीं है है EditText पर पहली क्लिक ईवेंट द्वारा दिनांक पिकर संवाद को कॉल करने के लिए। – user3806621

0

यह सबसे अच्छा समाधान जो खुले किसी भी DatePicker & TimePickerEditText से संवाद के लिए बहुत उपयोगी है

editdate.setFocusable(false); 
editdate.setKeyListener(null); 
संबंधित मुद्दे