2012-06-17 2 views
1

이전 WebOS 응용 프로그램을 android에 적용하고 거의 모든 응용 프로그램에서 phonegap을 사용하고 있습니다. (이전 코드는 javascript 였으므로 편리합니다.) 입력 용 네이티브 AutoCompleteTextView. 내 이국적인 하이브리드 응용 프로그램으로 인해 NullPointerException이 발생합니다. 그러나 처음부터 시작하겠습니다. 내가 된 setContentView에있을 내 문제에 대한 해결책을 제시 블로그에 몇 가지 메모를 발견 그래서AutoCompleteTextView (ArrayAdapter) PhoneGap의 NullPointerException

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

    super.loadUrl("file:///android_asset/www/index.html"); 

    /* ... boring things here ... */ 

    // http://stackoverflow.com/questions/7320910/android-phonegap-with-native-controls 
     View footer = View.inflate(getContext(), R.layout.footer, null); 
     root.addView(footer); 

    // setContentView(root); 
    // http://www.kwpro.net/blogs/2011/1/10/1651_Android_AutoComplete_Tutorial_Amendment.html   
} 

처럼 (내가 여기 게시물 당) 바닥 글을 추가,하지만 작동하지 않습니다. 어쨌든, 나는 (자바 인터페이스를 통해 window.f.setAutoComplete()를 통해) 이것을 사용하여 javascript에서 자동 완성 텍스트를 정확히 한 번 설정합니다.

public void setAutoComplete(String []s) { 
    Log.d(TAG, "[native]: setting autocomplete text"); 

    AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.inpu); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, s); 
    textView.setAdapter(adapter); 
} 

어쨌든 모든 것이 작동하는 것 같습니다. 즉, 선택 목록이 나타나고 응용 프로그램을 강제 종료하는 NullPointerException이 발생하기 전에 가끔씩 하나를 선택할 수 있습니다. 나는 이걸 다룰 준비가 안됐다. 그래서 공개적으로 물어볼 것이라고 생각했다.

W/dalvikvm(1832): threadid=11: thread exiting with uncaught exception (group=0x409c01f8) 
E/AndroidRuntime(1832): FATAL EXCEPTION: WebViewCoreThread 
E/AndroidRuntime(1832): java.lang.NullPointerException 
E/AndroidRuntime(1832):  at android.widget.AbsListView$RecycleBin.getScrapView(AbsListView.java:5900) 
E/AndroidRuntime(1832):  at android.widget.AbsListView.obtainView(AbsListView.java:2003) 
E/AndroidRuntime(1832):  at android.widget.ListPopupWindow$DropDownListView.obtainView(ListPopupWindow.java:1168) 
E/AndroidRuntime(1832):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1244) 
E/AndroidRuntime(1832):  at android.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1095) 
E/AndroidRuntime(1832):  at android.widget.ListPopupWindow.show(ListPopupWindow.java:524) 
E/AndroidRuntime(1832):  at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1062) 
E/AndroidRuntime(1832):  at android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:939) 
E/AndroidRuntime(1832):  at android.widget.AutoCompleteTextView.onFilterComplete(AutoCompleteTextView.java:921) 
E/AndroidRuntime(1832):  at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:285) 
E/AndroidRuntime(1832):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(1832):  at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(1832):  at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:728) 
E/AndroidRuntime(1832):  at java.lang.Thread.run(Thread.java:856) 

내 추측 ... 난 "UI 물건을 할 수있는 하나의 스레드"그 실행 해요 것을 아 ... 패러다임,하지만 난 ':

예외 덤프는 다음과 같습니다 확실하지 않은 경우 어떻게 수정해야하는지, 그리고 그렇지 않은 경우 다음에 무엇을 시도해야할지 모르겠다.

+0

나는 자바 스크립트 자동 완성 기능을 사용하기 위해 많은 노력을 기울였습니다.하지만 그렇게 많은 문제가 있습니다. 가능한 경우 기본 기능을 원했습니다. 내가 뭔가 다른 것을 알아낼 수는 없지만 네이티브 컨트롤이 좋으면이 기능을 사용할 수 있기를 바랍니다. – jettero

답변

1

자동 응답은 자동 응답 기능의 일부이기 때문에 업데이트를 요청해야합니다. 아주 간단합니다. 나는 그 질문 자체에서 그것을 추측했지만, 모든면에서 그것을 추론하지는 않았다.

public void setAutoComplete(String []s) { 
    Log.d(TAG, "[native]: setting autocomplete text"); 

    autoCompleteArray = s; 

    handler.post(new Runnable() { 
     public void run() { 
      hist.clear(); 
      for(int i=0; i<autoCompleteArray.length; i++) 
       hist.add(autoCompleteArray[i]); 
      hist.notifyDataSetChanged(); 
     } 
    }); 
} 
관련 문제