1

編集:最後に修正しました。IllegalStateException を修正するために、onClick xml の代わりに OnClickListener を追加しました。問題は、ボタンが呼び出した関数が、親アクティビティ自体ではなく、フラグメントにあったためです。その後、nullPointerException が発生しました。これは私を助けました:他のクラスで実装されたインターフェースメソッドを呼び出す際のヌルポインタ例外 私はこれが誰かに役立つことを願っています:)

アクティビティがあり、タブとして表示されるフラグメントにアプリを作成しています (私は SherlockActionBar を使用しています)。アクティビティの関数を呼び出すボタンを作成しました (xml onClick を使用)。その関数は、タブの 1 つでパブリック関数を呼び出します。タブ間でデータを送信するためにインターフェイスを使用しています。

このチュートリアルを例として使用しました: 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