Android DialogFragment检索所选选项

时间:2012-10-16 17:49:12

标签: java android

我基本上有一个对话片段,显示了一系列选项。

我想做的是,

传回给调用活动,选择了哪个选项。然后,在原始活动中调用一个方法。

我正在使用的ATM,

((Activity)method();,从对话框中调用调用活动方法, 但这似乎非常有效,因为在执行此操作时,响应时间会减慢。

换句话说,我怎样才能简单地从我刚创建的片段中快速获取信息?

在活动中,

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
}

1 个答案:

答案 0 :(得分: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!
   }

 }