1

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);

}
}

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

4

2 回答 2

1

我建议简单地将其DialogFragment放在一个单独的类中。这样你就可以从你的FragmentActivity和应用程序中的任何其他地方调用它。似乎比试图通过FragmentActivity.

但是,如果这确实是您想要做的,那么我之前没有这样做过,FragmentActivity但我使用了 Fragment。如果您FragmentActivity动态加载 a Fragment,您可以像之前一样添加一个标签,让您可以Fragment非常简单地在应用程序的其他地方访问它。

我确信您可以Fragment通过该方法访问任何可见的方法,并且如果您将 show() 方法与动态添加Fragment的 . 你可以实现它,虽然非常迂回。

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

干杯

于 2013-07-09T15:25:28.823 回答
1

为了显示对话框,您应该遵循Google 发布的官方指南。

于 2013-07-09T12:18:11.903 回答