除了使用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类??
答案 0 :(得分:1)
要显示对话框,您应该按照Google发布的the official guide进行操作。
答案 1 :(得分:1)
我建议只将DialogFragment
放在一个单独的类中。这样您就可以从FragmentActivity
和应用中的任何其他位置调用它。似乎比通过FragmentActivity
调用它更简单明了。
然而,如果确实是你想要做的事情,我之前没有使用FragmentActivity
,但我有片段。如果您的FragmentActivity
动态加载Fragment
,则可以添加标记,这样您就可以非常简单地访问应用中其他地方的Fragment
。
我确信您可以通过该方法访问任何可见的Fragment
方法,如果您使用动态添加的Fragment
包含show()方法。你可以实现它,但非常迂回。
无论哪种方式,我都会亲自分离DialogFragment
并创建一个帮助方法,可能在Application
对象中处理一些样板代码(如果它被大量使用)。
干杯