0

別のクラスからフラグメントメソッドを呼び出す正しい方法は何ですか?

私はそのようなクラス'ParseCommands.java'を持っています:

public class ParseCommands {

   public static Context context;

   < call to FragmentSettings.doStuff() >

}

フラグメントでメソッドdoStuff()を呼び出したい:

public class FragmentSettings extends PreferenceFragment {

private static Activity a;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
}

public void doStuff(String message) {
    Toast.makeText(a, message, Toast.LENGTH_SHORT).show();
}

}

タブを介してフラグメントを適用するため、フラグメントマネージャーを使用してフラグメントを設定しませんが、メソッドを呼び出すために次のことを試みましたが、機能しないようです。

Activity act = (Activity) context;
FragmentManager fm = act.getFragmentManager();
FragmentSettings fs = (FragmentSettings) m.findFragmentById(R.xml.fragment_settings);
fs.doStuff("it actually worked!");

そして、doStuffを静的として宣言し、次のように呼び出してみました。

FragmentSettings.doStuff

どちらの方法もうまくいかないようです...

これを行う正しい方法は何ですか?

4

1 に答える 1

1

ParseCommandsクラスにコンテキストオブジェクトがあるため、LocalBroadCastManagerを使用してFragmentにメッセージを送信できます。フラグメントにはBroadcastReceiver実装が必要であり、onReceiveメソッドからdoStuffメソッドを呼び出すことができます。

実装のチェックアウトについては、LocalBroadcastManagerの使用方法を確認してください。

于 2012-12-06T09:00:48.067 に答える