我尝试使用代码打开片段中的其他片段:
btnRegister.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
register();
}
});
private void register(){
....
Intent i = new Intent(getActivity(), LoginFragment.class);
startActivity(i);
}
任何人都知道为什么我的应用停止工作?
运行时异常错误: 无法实例化活动ComponentInfo {com.bakalauras.rtaujenis / com.bakalauras.rtaujenis.LoginFragment}:java.lang.ClassCastException:com.bakalauras.rtaujenis.LoginFragment无法强制转换为android.app.Activity
我这样做因为我发现示例http://developer.android.com/guide/components/fragments.html#Example在最后一行else语句中查找TitlesFragment类。
答案 0 :(得分:1)
从您的课程名称开始,这是我们唯一看到的内容,因为几乎没有代码,您似乎尝试使用Fragment
加载Intent
。这种机制是Activities
用来互相启动的机制。动态添加Fragments
需要您使用FragmentTransaction
中的FragmentManager
。
如果LoginFragment
实际上是Activity
,我们需要查看更多代码。
如果LoginFragment
是Fragment
,请阅读Android guide for using Fragments
答案 1 :(得分:1)
它正在崩溃,因为您正在尝试使用startActivity
函数启动片段。
这不是片段的使用方式。您可以将Activity视为应用程序的窗口,将Fragments视为该应用程序的各个部分,因此,如果您尝试从一个片段更改为另一个片段,则需要使用FragmentTransaction
android.support.v4.app.FragmentManager fragmentManager1 = getSupportFragmentManager();
FragmentTransaction fragmentTransaction1 = fragmentManager1.beginTransaction();
fragmentTransaction1.replace(R.id.container, LoginFragment);
fragmentTransaction1.commit();
其中R.id.container
是包含原始视图的框架,并将“换行”新视图。
查看this tutorial以了解如何使用片段。另请查看官方文档片段以了解Fragments的生命周期,因为它们与活动不同
答案 2 :(得分:0)
尝试此代码示例。
private void register(){
// Create new fragment and transaction
Fragment newFragment = new LoginFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
}