2012-03-18 2 views
0

у меня есть 3 EditText поля, установленные в Аналогичным образом к следующим:Не удается захватить вход в EditText полей

<EditText 
    android:id="@+id/evnttitle" 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:background="#ffffff" 
    android:inputType="textNoSuggestions" 
    android:textColor="#000000" 
    android:textCursorDrawable="@null" 
    android:layout_marginBottom="20dp"> 

    <requestFocus /> 
</EditText> 

В моем коде они настроены как это вне OnCreate:

EditText titlecap; 

Тогда в одном из моих методов у меня есть это:

titlecap = (EditText) findViewById(R.id.evnttitle); 

CharSequence titleconv = titlecap.getText(); 

addAppt(timeconv.toString(), titleconv.toString(), ... 

Это один из многих методов я пытался теперь, как это Если у меня возникли проблемы с получением строк из полей edittext, я продолжаю получать исключения с нулевым указателем, причем эта версия его там, где я пытаюсь назначить последовательности символов. Как я могу получить то, что набрано в EditTexts как String?

LogCat:

enter image description here

LogCat как текст:

FATAL EXCEPTION: main 
java.lang.NullPointerException 
at w1279057.CW2.CW2Organisor$2.onClick(CW2Organisor.java:88) 
at android.view.View.performClick(View.java:3511) 
at android.view.View$PerformClick.run(View.java:14105) 
at android.os.Handler.handleCallback(Handler.java:605) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4424) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
at dalvik.system.NativeStart.main(Native Method) 

Добавлено OnCreate:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    View createappt = findViewById(R.id.newappt); 
    createappt.setOnClickListener(this); 
    View delappt = findViewById(R.id.delappt); 
    delappt.setOnClickListener(this); 

    calendar = (CalendarView) findViewById(R.id.cal); 

    appts = new ApptsData(this); 



} 

Полный о методе Клик:

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 

    case R.id.newappt: 

     final Dialog dialog = new Dialog(this); 
     dialog.setContentView(R.layout.poptest); 
     dialog.setTitle("Create New Appointment"); 
     dialog.setCancelable(true); 

     Button buttoncancel = (Button) dialog.findViewById(R.id.Button01); 
     buttoncancel.setOnClickListener(new OnClickListener() { 

     // on click for cancel button 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 

     Button buttonsave = (Button) dialog.findViewById(R.id.Button02); 
     buttonsave.setOnClickListener(new OnClickListener() { 

     // on click for save button 
      @Override 
      public void onClick(View v) { 

       timecap = (EditText) findViewById(R.id.evnttime); 

       titlecap = (EditText) findViewById(R.id.evnttitle); 

       detcap = (EditText) findViewById(R.id.evntdet); 

       CharSequence timeconv = timecap.getText(); 

       CharSequence titleconv = titlecap.getText(); 

       CharSequence detconv = detcap.getText(); 


      cursor = getAppts(); 
      addAppt(timeconv.toString(), titleconv.toString(),  detconv.toString()); 
      showAppts(cursor); 
      dialog.dismiss(); 
    } 
     }); 

     dialog.show(); 
     break; 

    case R.id.delappt: 
     rmvall(); 
     break; 
    } 

} 
+0

Пожалуйста, ваши LogCat, который показывает исключение. Также: есть ли у всех одинаковый идентификатор? Они должны иметь разные идентификаторы, если вы хотите различать их. – louielouie

+0

И да, у каждого EditText есть свой собственный идентификатор – nexus490

+0

Итак, нулевой указатель находится в строке 'CharSequence titleconv = titlecap.getText();', выше или ниже ниже? – louielouie

ответ

1

Не делайте

Просмотр createappt и просмотр delappt локальными по отношению к OnCreate()

Создайте их вне его, так что он имеет доступ везде в классе.

View createappt = null; 
View delappt = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    createappt = findViewById(R.id.newappt); 
    createappt.setOnClickListener(this); 

    delappt = findViewById(R.id.delappt); 
    delappt.setOnClickListener(this); 

    calendar = (CalendarView) findViewById(R.id.cal); 

    appts = new ApptsData(this); 
} 

Добавление обновлений

// on click for save button 
@Override 
public void onClick(View v) { 

    String strTime = ((EditText) dialog.findViewById(R.id.evnttime)).getText(); 

String strTitle = ((EditText) dialog.findViewById(R.id.evnttitle)).getText(); 

String strDet = ((EditText) dialog.findViewById(R.id.evntdet)).getText(); 

cursor = getAppts(); 
addAppt(strTime, strTitle, strDet); 
showAppts(cursor); 
dialog.dismiss(); 
} 
+0

Как создать их на улице, я получаю ошибки – nexus490

+0

И где именно я бы назначил слушателей, это все еще сделано в onClick? – nexus490

+0

Удерживайте. Позвольте мне отредактировать сообщение, чтобы включить его. – Shubhayu

Смежные вопросы