【发布时间】:2013-07-09 10:23:58
【问题描述】:
除了使用Intents 启动它之外,还有其他方法可以调用FragmentActivity 中的方法吗?
有人可以帮忙吗?
代码如下:
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);
}
}
有没有其他方法可以调用
DialogActivity中的show()方法从 另一个 Activity 类??
【问题讨论】:
-
您的另一个活动是由 DialogActivity 启动的吗?
-
no..那个活动是mainActiviy。从那里我需要显示一个对话框。所以我添加了对话框片段。但我无法使用它
-
我有点迷路了。您想要这样做的原因是您不想在另一个活动中显示对话框时复制整个方法 show()?
-
如果我只是将 show() 方法复制到 activiy。那么 getSupportFragmentManager() 将显示错误。因为它需要 FragmentActiviy 对吗?
-
FragmentActivity 供兼容性库使用(来自
android.support.v4.app),用于为旧版Android添加Fragment兼容性。但是 FragmentActivity 是 Activity,而不是 Fragment。作为证明,FragmentActivity 扩展了 Activity,而不是 Fragment!
标签: android android-fragmentactivity android-dialogfragment