更一般地,你可以创建一个片段容器类:
public class SingleFragmentActivity extends Activity {
public static final String FRAGMENT_NAME = "fragmentName";
public static final String FRAGMENT_ARGUMENTS = "fragmentArguments";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String fragmentName = getIntent().getStringExtra(FRAGMENT_NAME);
Fragment fragment = Fragment.instantiate(this, fragmentName);
Bundle fragmentArguments = getIntent().getBundleExtra(FRAGMENT_ARGUMENTS);
fragment.setArguments(fragmentArguments);
getSupportFragmentManager().beginTransaction().replace(android.R.id.content,fragment, "tag").commit();
}
}
现在你使用这个类实例化的任何片段作为一个独立的活动:
public void showFragmentAsActivity() {
Intent intent = new Intent(this, SingleFragmentActivity.class);
intent.putExtra(SingleFragmentActivity.FRAGMENT_NAME, MyFragment.class.getName());
intent.putExtra(SingleFragmentActivity.FRAGMENT_ARGUMENTS,MyFragment.getArgumentsBundle("a string argument"));
startActivity(intent);
}
考虑您的解决方案一步正向创建通用'SingleFragmentActivity'获得一个片段作为构造器参数,并将其添加到'onCreate'中。然后在每次需要某个单个片段活动时使用此活动。 – shem
@shem - 我做的事情完全一样 - 我将片段规范名称作为Action来传递,以便它可以从String中实例化。 – Graeme
那么,你也可以停止使用碎片,除非你真的需要碎片。在大多数情况下,使用简单的活动也可以完成这项工作 –