2015-12-16 3 views
0

Я очень новичок в android и могу использовать некоторую помощь. Я создал приложение, которое позволяет вам добавить пользователя (в данном случае, всадника). При нажатии «enter» появляется тост, чтобы сообщить пользователю, что человек был успешно добавлен. Я хочу, чтобы текст в поле editText был очищен. Я знаю, что здесь было много решений, но никто из них не работал для меня; они убивают мое приложение. Любая помощь? Код для ссылки:чистый текст ввода пользователя Android

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     editText = (EditText) findViewById(R.id.new_rider_name);    
     setContentView(R.layout.add_rider_screen); 

     button = (Button) findViewById(R.id.addRiderButton); 
     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       editText.setText(""); 

       Toast.makeText(getApplicationContext(), 

"The rider was successfully added!", Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 

Вот сообщение об ошибке LogCat:

E/AndroidRuntime: FATAL EXCEPTION: main 

E/AndroidRuntime: Process: com.example.cherryjp.buttonapp, PID: 8297 

E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference 

E/AndroidRuntime: at com.example.cherryjp.buttonapp.AddRiderScreen$1.onClick(AddRiderScreen.java:38) 

E/AndroidRuntime:  at android.view.View.performClick(View.java:4780) 

E/AndroidRuntime:  at android.view.View$PerformClick.run(View.java:19866) 

E/AndroidRuntime:  at android.os.Handler.handleCallback(Handler.java:739) 

E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:95) 

E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:135) 

E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5254) 

E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method) 

E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:372) 

E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 

E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
+1

«все они убивают мое приложение» - что появляется в Logcat, когда это происходит? –

+0

Вы не инициализировали 'editText' в любом месте, как вы, с вашей' Button' – codeMagic

ответ

3

Похоже, что вы не инициализировать EditText, вам нужно добавить эту строку в onCreate перед вызовом setText("")

editText = (EditText) findViewById(R.id.yourEditTextId); 

Удостоверьтесь, что положили это после того, как сможете setContentView, хотя

+0

Спасибо .. Мне это не хватало. Однако это все еще заставляет мое приложение прекратить выполнение. Если я прокомментирую: editText.setText (""); Затем приложение работает так, как планировалось. Мысли? –

+0

Можете ли вы отредактировать сообщение с результатом Logcat, когда ваше приложение выйдет из строя? Это облегчит диагностику проблемы. –

+0

Измените это в своем исходном сообщении. Можете ли вы обновить код метода 'onCreate' до того, что вам нужно изменить? –

0

Так же, как сказал Эндрю Брук,

Вы настроите свой EditText до того

setContentView(R.layout.add_rider_screen);

инициализации EditText после этого, и вы хорошо идти .....

ли что-то например:

setContentView(R.layout.add_rider_screen); 
editText = (EditText) findViewById(R.id.new_rider_name); 
Смежные вопросы