1

编辑:终于修好了。为了修复 IllegalStateException,我添加了一个 OnClickListener 而不是 onClick xml,因为问题是按钮调用的函数位于片段中,而不是父活动本身。之后,我有一个 nullPointerException。这帮助了我:调用其他类中实现的接口方法时出现空指针异常 我希望这对某人有用:)

我正在创建一个应用程序,其中有一个 Activity 和显示为选项卡的片段(我正在使用 SherlockActionBar)。我创建了一个按钮,它调用 Activity 上的函数(使用 xml onClick),并且该函数调用其中一个选项卡上的公共函数。我正在使用接口在选项卡之间发送数据。

我以本教程为例: http: //manishkpr.webheavens.com/android-passing-data-between-fragments/ 我已经下载了它的源代码,但我不明白它与我的有什么不同,为什么那个可以工作,而我的不行

我的代码如下:

界面:

package es.pabloarteaga.vocabulario;

public interface ForgottenListener {

public void addWord(String word, String other);

}

主要活动:(oFRAG1 和 oFRAG2 是选项卡中显示的片段)

public class Quiz1 extends SherlockFragmentActivity implements ForgottenListener {

ViewPager oPAGER;
Tab oTAB;
ActionBar oBARRA;
Quiz1main oFRAG1 = new Quiz1main();
Quiz1remember oFRAG2 = new Quiz1remember();

public void dbgfnc(View v) {
oFRAG1.addForgottenWord ("aaa","BBB");
}

@Override 
Public void addWord (String word, String other) {
//Still does nothing
} 

调用函数的片段:

public class Quiz1main extends SherlockFragment {
ForgottenListener oLISTEN;

public void addForgottenWord(String word, String Other) {
    oLISTEN.addWord("AAA", "BBB");
}

}

异常日志:

08-21 00:03:55.192: E/AndroidRuntime(28264): FATAL EXCEPTION: main
08-21 00:03:55.192: E/AndroidRuntime(28264): java.lang.IllegalStateException: Could not execute method of the activity
08-21 00:03:55.192: E/AndroidRuntime(28264):    at android.view.View$1.onClick(View.java:3735)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at android.view.View.performClick(View.java:4354)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at android.view.View$PerformClick.run(View.java:17961)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at android.os.Handler.handleCallback(Handler.java:725)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at android.os.Looper.loop(Looper.java:137)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at android.app.ActivityThread.main(ActivityThread.java:5328)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at java.lang.reflect.Method.invokeNative(Native Method)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at java.lang.reflect.Method.invoke(Method.java:511)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at dalvik.system.NativeStart.main(Native Method)
08-21 00:03:55.192: E/AndroidRuntime(28264): Caused by: java.lang.reflect.InvocationTargetException
08-21 00:03:55.192: E/AndroidRuntime(28264):    at java.lang.reflect.Method.invokeNative(Native Method)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at java.lang.reflect.Method.invoke(Method.java:511)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at android.view.View$1.onClick(View.java:3730)
08-21 00:03:55.192: E/AndroidRuntime(28264):    ... 11 more
08-21 00:03:55.192: E/AndroidRuntime(28264): Caused by: java.lang.NullPointerException
08-21 00:03:55.192: E/AndroidRuntime(28264):    at es.pabloarteaga.vocabulario.Quiz1main.addForgottenWord(Quiz1main.java:43)
08-21 00:03:55.192: E/AndroidRuntime(28264):    at es.pabloarteaga.vocabulario.Quiz1.dbgfnc(Quiz1.java:30)
08-21 00:03:55.192: E/AndroidRuntime(28264):    ... 14 more
4

0 回答 0