除了使用意图启动它之外,还有其他方法可以调用FragmentActivity中的方法吗?

时间:2013-07-09 10:23:59

标签: android android-fragmentactivity android-dialogfragment

除了使用FragmentActivity启动方法之外,还有其他方法可以调用Intents中的方法吗? 有人可以帮忙吗?

代码如下:

    class MainActiviy extends Activiy{
   //some code
   //here i need to show a dialog
 }


class MyDialog extends DialogFragment {

int mNum = 0;
static MyDialog newInstance(){
    return new MyDialog();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    //dialog view
    Log.i("MyDialog", "onCreateview");
    View v = inflater.inflate(R.layout.dialog, container, false);
    TextView v1 = (TextView) v.findViewById(R.id.text);
    v1.setText("dialog shown");
    return v;
}

}


public class DialogActivity extends FragmentActivity{

DialogFragment dialogfragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


}
void show(){
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    Fragment f = getSupportFragmentManager().findFragmentByTag("dialog");

    if(f != null){
        ft.remove(f);
    }

    dialogfragment = MyDialog.newInstance();

    dialogfragment.setCancelable(false);
    dialogfragment.show(ft, "dialog");
    dialogfragment.setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Holo_Light_Dialog);

}
}
  

还有其他方法可以调用show()中的DialogActivity方法   另一个Activity类??

2 个答案:

答案 0 :(得分:1)

要显示对话框,您应该按照Google发布的the official guide进行操作。

答案 1 :(得分:1)

我建议只将DialogFragment放在一个单独的类中。这样您就可以从FragmentActivity和应用中的任何其他位置调用它。似乎比通过FragmentActivity调用它更简单明了。

然而,如果确实是你想要做的事情,我之前没有使用FragmentActivity,但我有片段。如果您的FragmentActivity动态加载Fragment,则可以添加标记,这样您就可以非常简单地访问应用中其他地方的Fragment

我确信您可以通过该方法访问任何可见的Fragment方法,如果您使用动态添加的Fragment包含show()方法。你可以实现它,但非常迂回。

无论哪种方式,我都会亲自分离DialogFragment并创建一个帮助方法,可能在Application对象中处理一些样板代码(如果它被大量使用)。

干杯

相关问题