2

基本的に、さまざまなオプションを示すダイアログフラグメントがあります。

私がやろうとしていることは、

どのオプションが選択されたかを呼び出すアクティビティに戻します。これにより、元のアクティビティでメソッドが呼び出されます。

私が利用しているATMは、

((Activity) method(); 、呼び出し元のアクティビティ メソッドをダイアログ内から呼び出しますが、これを行うと Android の応答時間が遅くなるため、これは非常に効率が悪いようです。

つまり、作成したばかりのフラグメントから情報を簡単かつ迅速に取得するにはどうすればよいでしょうか?

活動では、

button.setOnClickListener( new OnClickListener() {

        public void onClick(View arg0)  {

            FragmentManager fm = getFragmentManager();
            FragClass frag = new FragClass();
            frag.show(fm, "fragment_sub_connections");

        }

そしてFragClassで、

    public FragClass()
{


}



@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{

    View view = inflater.inflate(R.layout.fragment_sub_connections, container);
            //some code here
}
4

1 に答える 1

3

リスナー インターフェイスを作成し、アクティビティがそれを実装できるようにします。これはコールバックとして使用できます。

// In your fragment

public interface OnMyFragDismissListener(){
     void onMyFragDismissed(MyObject obj);
}    

// onCreate...

// someCode...

// However you have the user select the option
@Override
public void onDismiss(DialogInterface d){
     if(getActivity() instanceof OnMyFragDismissListener)}
        ((OnMyFragDismissListener)getActivity()).onMyFragDismissed(result); // result being the user choice
     }
}

次に、次のように使用します。

public class YourActivity extends Activity implements OnMyFragDismissListener {

   // code...
    FragmentManager fragman = getFragmentManager();
    FragClass frag = new FragClass();
    frag.show(fm, "fragment_sub_connections");


  // code...

   @Override
   public void onMyFragDismissed(MyObject obj){
        // Fragment dismissed and object received!
   }

 }
于 2012-10-16T21:29:26.210 に答える