다음 두 가지 기능을 통해 다음과 같은 기능을 사용할 수 있습니다. 모두를 호출하는 첫 번째 방법은 올바른, 두 번째 방법은 다음 NullPointerException 얻을. 이유가 무엇입니까? EditText를 사용할 때 NullPointerException이 발생했습니다.
private void doSearch(View v) {
Activity activity = getActivity();
//get the text:
EditText editSearch = (EditText) v.findViewById(R.id.editSearch);
String query = editSearch.getText().toString();
//check if 2 letters were entered for search
if (query.length()>1){
//call service with extra
Intent intent = new Intent(activity, SearchPlacesService.class);
intent.putExtra("query", query);
activity.startService(intent);
}else{
Toast.makeText(getActivity(), "Please enter 2 letters for search", Toast.LENGTH_SHORT).show();
}
}
//good call
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
switch (v.getId()) {
case R.id.editSearch:
doSearch(v);
return true;
}
return false;
}
//unsuccessful call
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSearch:
doSearch((TextView) v);
break;
}
}
로그 캣
:01-07 09:29:08.843: E/AndroidRuntime(1078): FATAL EXCEPTION: main
01-07 09:29:08.843: E/AndroidRuntime(1078): java.lang.NullPointerException
01-07 09:29:08.843: E/AndroidRuntime(1078): at com.lora_solomon.myfavoriteplaces.view.FragmentList.doSearch(FragmentList.java:137)
01-07 09:29:08.843: E/AndroidRuntime(1078): at com.lora_solomon.myfavoriteplaces.view.FragmentList.onClick(FragmentList.java:100)
01-07 09:29:08.843: E/AndroidRuntime(1078): at android.view.View.performClick(View.java:4084)
01-07 09:29:08.843: E/AndroidRuntime(1078): at android.view.View$PerformClick.run(View.java:16966)
01-07 09:29:08.843: E/AndroidRuntime(1078): at android.os.Handler.handleCallback(Handler.java:615)
01-07 09:29:08.843: E/AndroidRuntime(1078): at android.os.Handler.dispatchMessage(Handler.java:92)
01-07 09:29:08.843: E/AndroidRuntime(1078): at android.os.Looper.loop(Looper.java:137)
01-07 09:29:08.843: E/AndroidRuntime(1078): at android.app.ActivityThread.main(ActivityThread.java:4745)
01-07 09:29:08.843: E/AndroidRuntime(1078): at java.lang.reflect.Method.invokeNative(Native Method)
01-07 09:29:08.843: E/AndroidRuntime(1078): at java.lang.reflect.Method.invoke(Method.java:511)
01-07 09:29:08.843: E/AndroidRuntime(1078): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-07 09:29:08.843: E/AndroidRuntime(1078): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-07 09:29:08.843: E/AndroidRuntime(1078): at dalvik.system.NativeStart.main(Native Method)
어떤 도움을 주셔서 감사합니다!
StackTrace를 알려주시겠습니까? –
로그에 v, v.getId(), R.id.btnSearch? – rajesh
'View view = (View) v.getParent();'그렇다면'view.findVIewById' – Raghunandan