[英]Android: Cant replace fragment inside activity with another fragment?
我是android开发的新手,在用另一个片段替换一个片段时遇到一些问题。
在MainFragment.java
,我在onCreate
所做的第一件事是检查Internet连接,如果没有,则将该片段替换为InternetCheckFragment
。 但是,在InternetCheckFragment.java
,当我尝试为我的check_internet.xml
充气时,该应用程序将关闭,但是没有错误。
activity_main.xml:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_browse_fragment"
android:name="com.ui.MainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ui.MainActivity"
tools:deviceIds="tv"
tools:ignore="MergeRootFrame" />
MainActivity.java:
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
MainFragment.java:
public class MainFragment extends VerticalGridFragment
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if (isConnectedToInternet() == true)
{
// DO stuff
}
else
{
showInternetError();
}
}
public void showInternetError()
{
getFragmentManager().beginTransaction().replace(R.id.show_internet_error , new InternetCheckFragment())
.commit();
}
....
}
InternetCheckFragment.java:
public class InternetCheckFragment extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
// Defines the xml file for the fragment
return inflater.inflate(R.layout.check_internet, parent, false);
}
}
check_internet.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/show_internet_error"
android:background="@color/black_transparent">
<Button android:id="@+id/btn_retry"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="RETRY"
android:layout_centerInParent="true"/>
</RelativeLayout>
但是,我收到错误No view found for id
。
我确定设置不正确吗? 有人可以指出我正确的方向吗?
谢谢!
您正在使用Fragment的FragmentManager在Fragment中放大一个Fragment。 该FragmentManager无法处理此问题。
尝试将SupportFragmentManager
与AppCompatActivity.getSupportFragmentManager()
和android.support.v4.app.Fragment
的支持片段一起使用
!唉..这是一个愚蠢的错误,我换成R.id.show_internet_error
内getFragmentManager().beginTransaction().replace(R.id.show_internet_error , new InternetCheckFragment()).commit();
使用R.id.main_browse_fragment
,现在可以使用了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.