2013-03-06 5 views
1

현재 논문을 가지고 작업 코드가 있지만 함수/메소드/객체를 사용하여 정리하기로 결정했습니다.하지만 정리 한 후에는 앱이 충돌합니다. 시작해. 나는 그 문제가 뭔지 정말로 모른다.안드로이드 - 객체를 호출 할 때 충돌이 발생합니다.

주 화면에는 시작 및 종료 버튼이 표시됩니다. START 키를 누르면 앱에서 '불행히도 논문이 중지되었습니다'라고 표시됩니다.

내 코드는 다음과 같이 진행됩니다

public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.items, menu); 
    View v = (View) menu.findItem(R.id.search).getActionView(); 
    final EditText txtSearch = (EditText) v.findViewById(R.id.txt_search); 
    txtSearch.setOnEditorActionListener(new OnEditorActionListener() { 

     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      String curtextArray = txtSearch.getText().toString(); 
      char[] curletters = curtextArray.toCharArray(); 
      char[] curenhancedLetters = curtextArray.toCharArray(); 

//probably, problem here on Stemming stem 
      Stemming stem = new Stemming(curtextArray, curletters, curenhancedLetters); 
      AsyncTaskRunner newTask = new AsyncTaskRunner(enhancedStem); 

// and probably, problem is here on the stem.<x process>; 
      stem.removeApostrophe(); 
      stem.vowelMarking(); 
      stem.shortSyllable(); 
      if (continueStem == 1){ 
       stem.region1(); 
       stem.region2(); 
       stem.shortWord(); 
       stem.step0(); 
       stem.step1a(); 
       stem.step1b(); 
       newTask.execute(); 
      } 
      return false; 
     }; 
    });  
    return super.onCreateOptionsMenu(menu); 

}

여기 나는 그것이 충돌 이유에 이론을 내 형태소 클래스

public class Stemming { 
    String textArray; 
    char[] letters; 
    char[] enhancedLetters; 


    public Stemming (String curtextArray, char[] curletters, char[] curenhancedLetters){ 
     this.textArray = curtextArray; 
     this.letters = curletters; 
     this.enhancedLetters = curenhancedLetters; 
    } 

    public Stemming(){ 

    } 

    public void removeApostrophe(){ 
     ...processes here 
    } 
    public void vowelMarking(){ 
     ...processes here 
    } 
    public void shortSyllable(){ 
     ...processes here 
    } 

    public void region1(){ 
     ...processes here 
    } 
    public void region2(){ 
     ...processes here 
    } 
    public void shortWord(){ 
     ...processes here 
    } 
    public void step0(){ 
     ...processes here 
    } 
    public void step1a(){ 
     ...processes here 
    } 
    public void step1b(){ 
     ...processes here 
    } 
} 

}

입니다. 이 방법이 가능합니까? (의사) :

내가 어떤 변수 선언 (내 변수는 전 세계적으로 선언 된) 또는 초기화를하지 않고 공정 직선 방식으로 문자열을했다 무슨 짓을
public class Stemming { 
String result; 
String sample = "A A A A A"; 

public void changeAtoB{ 

    //do process to convert all As to Bs making String sample = "B B B B B" 
    result = sample; 
} 

    public void changeBtoC{ 
    //do process to convert all Bs to Cs making String result = "C C C C C" 
    result = result; 
} 

    ... so on { 
    } 
} 

. 나는 또한 어떤 진술도하지 않았다.

함수/메소드/객체가 아직없는 경우 코드가 작동하는 데 사용됩니다.

내 긴 게시물에 대해 죄송합니다. 그것을 더 잘 설명하는 방법을 모르십시오. 네가 날 도와줬으면 좋겠어. 미리 감사드립니다!

로그 캣 :

>E/AndroidRuntime(11007): FATAL EXCEPTION: main 
E/AndroidRuntime(11007): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.atienzaerni.thesis/com.atienzaerni.thesis.secondactivity}: java.lang.NullPointerException 
E/AndroidRuntime(11007): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891) 
E/AndroidRuntime(11007): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 
E/AndroidRuntime(11007): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
E/AndroidRuntime(11007): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
E/AndroidRuntime(11007): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(11007): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(11007): at android.app.ActivityThread.main(ActivityThread.java:4441) 
E/AndroidRuntime(11007): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(11007): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(11007): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(11007): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(11007): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(11007): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(11007): at android.app.Activity.findViewById(Activity.java:1794) 
E/AndroidRuntime(11007): at com.atienzaerni.thesis.secondactivity.<init>(secondactivity.java:54) 
E/AndroidRuntime(11007): at java.lang.Class.newInstanceImpl(Native Method) 
E/AndroidRuntime(11007): at java.lang.Class.newInstance(Class.java:1319) 
E/AndroidRuntime(11007): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
E/AndroidRuntime(11007): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882) 
E/AndroidRuntime(11007): ... 11 more 
I/Process(11007): Sending signal. PID: 11007 SIG: 9 

는 V가 null 때문에 NullPointerException이 점점처럼

+3

충돌의 스택 추적을 제공하십시오. – keyboardsurfer

+0

logcat 게시 – gpasci

+0

logcat에 복사 붙여 넣기를 사용합니다. greencolorDroid – DjHacktorReborn

답변

0

것 같습니다 (.. 나는 그런데 내 휴대 전화를 사용하고하지 에뮬레이터이 차이를 만드는 경우) 이 라인에서 :

:

final EditText txtSearch = (EditText) v.findViewById(R.id.txt_search); 

이 아마 널 (null)에 의해 발생 여기에 메뉴 항목 액션 뷰에서 반환되는

View v = (View) menu.findItem(R.id.search).getActionView(); 

코드에서 동작보기를 설정하고 getActionView를 호출하거나 메뉴 XML에서 적절한 동작보기 집합을 설정해야합니다. 메뉴 XML을 보지 않으면 문제가 XML에 있는지 알기가 어렵습니다.

+0

실제로, 나는 그 editText가있는 화면조차도 보지 못합니다. "시작"과 "종료"를 보여주는 메인 화면이 있습니다. 시작을 클릭하면 "불행하게도 논문이 중단되었습니다."라는 메시지가 즉시 나타납니다. 하지만 기능을 수행하기 전에 완벽하게 작동합니다. –

+0

onCreateOptionsMenu 함수는 작업 표시 줄에있는 액티비티가 생성 될 때 바로 호출됩니다. 위에 게시 한 onCreateOptionsMenu 함수가 실행하려는 활동에 있습니까? 그럴 경우 새로운 활동이 실제로 표시되기 전에 충돌이 발생할 것입니다. – Bobbake4

+0

예, 편집 문구는 작업 표시 줄에 있습니다. 하지만 내 코드를 그렇게 변형 시켰을 때 충돌이 발생합니다. 기능을 사용하여 '깨끗하게'보입니다. 이전에 모든 코드는 oncreate 옵션 메뉴에 포함되어 있습니다. –

관련 문제