編集:最後に修正しました。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