我是Android开发的新手,并且在使用另一个片段替换片段时遇到了一些问题。
在我的MainFragment.java
中,我在onCreate
中做的第一件事是检查互联网连接,如果没有,我用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
。
我确定我没有正确设置?有人能指出我正确的方向吗?
谢谢!
答案 0 :(得分:0)
您正在使用Fragment的FragmentManager对片段中的片段进行充气。 这个FragmentManager无法解决这个问题。
尝试将SupportFragmentManager
与AppCompatActivity.getSupportFragmentManager()
和android.support.v4.app.Fragment
支持片段
答案 1 :(得分:0)
呃!这是一个愚蠢的错误,我用R.id.show_internet_error
替换了getFragmentManager().beginTransaction().replace(R.id.show_internet_error , new InternetCheckFragment()).commit();
内的R.id.main_browse_fragment
,现在可以了。