2016-04-03 16 views
1

Veri girişi olarak bir AlertDialog kullanıyorum ve düzen birkaç EditText alanı içeriyor. Ben bu alanları başvurmak, ancak gettext setText mümkün olmaz değil gibi görünüyor olabilir: Bu XML olduğunuKurulumDialog'lar içindeText ve getText nasıl ayarlanır

Onlara

CalendarView cv = (CalendarView)findViewById(R.id.cv_acitivtyDetails); 
cv.setOnDateChangeListener(new OnDateChangeListener() { 

@Override 
public void onSelectedDayChange(CalendarView view, int year, int month, 
     int dayOfMonth) { 

     final String dateString = Integer.toString(month) + "/" + Integer.toString(dayOfMonth) + "/" + Integer.toString(year); 

     CharSequence options[] = new CharSequence[] {"Show", "Add", "Delete"}; 

     AlertDialog.Builder builder = new AlertDialog.Builder(ActivityDetails.this); 
     builder.setTitle("Appointments"); 
     builder.setItems(options, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int position) { 

      switch (position) { 

      case 0: 

       AlertDialog.Builder builder = new AlertDialog.Builder(ActivityDetails.this); 
       LayoutInflater inflater = ActivityDetails.this.getLayoutInflater(); 
       builder.setTitle("Add Activity Appointment"); 
       builder.setMessage(currentAct); 
       builder.setView(R.layout.activitydetails_popup_add_activity); 
       final View popupView = inflater.inflate(R.layout.activitydetails_popup_add_activity, null); 

       // HERE I REFERENCE BOTH EDITTEXTS, THE ONE I WANT TO SET AND THE ONE I WANT TO GET 
       final EditText etDate = (EditText)popupView.findViewById(R.id.et_appointment_add_date); 
       final EditText etLoc = (EditText)popupView.findViewById(R.id.et_appointment_add_location); 

       // HERE I TRY TO SET THE DEFAULT DATE WHEN THE WINDOW POPS UP, BUT IT DOES NOT SEEM TO DO ANYTHING 
       etDate.setText(dateString); 

       builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 

         // HERE I AM USING A TOAST TO CHECK IF I GET THE TEXT FROM THE EDITTEXT, BUT IT ALWAYS SEEMS TO RETURN AN EMPTY STRING 
         String location = "LOC:" + etLoc.getText().toString(); 
         Toast.makeText(getApplicationContext(), location, Toast.LENGTH_SHORT).show(); 
         dialog.dismiss(); 
        } 
       }); 

       builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.cancel(); 
        } 
       }); 

       AlertDialog b = builder.create(); 
       b.show(); 


     break; 

     case 1: 

     break; 

     case 2: 

     break; 

     } 

     } 
     }); 
     builder.show(); 

     } 
     }); 

I erişmeye çalıştığınızda

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="Date (mm/dd/yyyy)" 
    android:inputType="date" 
    android:id="@+id/et_appointment_add_date" /> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="Start Time" 
    android:inputType="time" 
    android:id="@+id/et_appointment_add_start_time" /> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="End time (optional)" 
    android:inputType="time" 
    android:id="@+id/et_appointment_add_end_time"/> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="Location (optional)" 
    android:inputType="text" 
    android:id="@+id/et_appointment_add_location" /> 
</LinearLayout> 

ve kod aşağıda

diğer örneklere baktım ve benim uygulama ile çalışmakta olan diğer kişiler arasındaki farkı göremiyorum. Uyguladığım şeylerin sırasına yanlış bir şey mi var?

+0

Şişirdiğiniz son Görünümü Pop-up Görünümü'nü başka hiçbir yere gitmediniz. Sorun bu olabilir. Kendi diyaloğunu yazmanı öneririm, bu daha kolay olurdu. –

+0

Seni anlamıyorum. Popupview.findViewById() ile (EditText) üzerinden etditText alanlarını yeniden görüntüleyebilmem için popupView yarattım. Nereye gitmek gerekir " – chrise

+0

Ayrıca kendi iletişimimi yazarak ne demek istediğini anlamıyorum. AlertDialog yerine özel bir şey mi kullanmak istiyorsunuz? – chrise

cevap

1

öncelikle bu sorunun (builder.setView(R.layout.activitydetails_popup_add_activity);

final View popupView = inflater.inflate(R.layout.activitydetails_popup_add_activity, null); 

sonra doğrudan set görünümü yok bu builder.setView(popupview);

gibi uyarı iletişim oluşturucu bu görünümünü ayarlamak (aslında senin yaptığını) böyle popupview oluşturun. popupview ile bunun arasında bir ilişki yok. TextText ve getText'i popupview'den ayarlamaya çalışıyorsunuz ancak oluşturucunuz doğrudan görünümü kullanıyor.)

bunun işe yaradığını umuyoruz

+0

Mükemmel. ÇALIŞIYOR bir cazibe gibi. Yani, ben final'i çağırdığımda View popupView = inflater.inflate (some.xml) etkin bir şekilde xml'm bir örneğini oluşturabilirim, böylece xmls sınıflar gibidir (ya da belki daha iyi, gerçekten sadece şablonlar)? – chrise

+1

yah .. anladınız ... görüntünün bir görüntüsüdür. –

+0

görüntüleme sınıfının nesnesidir. – chrise