gpt4 book ai didi

java - Android - 调用对象时崩溃

转载 作者:行者123 更新时间:2023-12-01 04:49:19 25 4
gpt4 key购买 nike

我的论文现在有一个工作代码,但我决定使用函数/方法/对象来清理它(不太确定如何调用它们),但在组织它们之后,我的应用程序每次启动时都会崩溃。我真的不知道问题是什么。

主屏幕显示开始和退出按钮。当我按“开始”时,应用程序显示“不幸的是,论文已停止”。

我的代码是这样的:

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

(顺便说一句,我正在使用我的手机。不是模拟器。如果这会有所不同)

最佳答案

看起来您收到了 NullPointerException,因为 v 在这一行为 null:

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

这可能是由此处的菜单项操作 View 返回 null 引起的:

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

您应该在代码中设置操作 View 而不是调用 getActionView,或者确保在菜单 XML 中设置了正确的操作 View 。如果没有看到菜单 XML,就很难判断问题是否出在 XML 中。

关于java - Android - 调用对象时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15251326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com