如何在片段中设置setContentView
how to set setContentView in fragment
我正在尝试在片段中调用库,但不知道如何在片段中设置它我已经在主片段中完成了 activity 但是在我的片段中设置 setContentView 时出现错误
编译依赖
compile 'com.github.medyo:android-about-page:1.0.2'
我的片段内容查看
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_navigation, container, false);
Element versionElement = new Element();
versionElement.setTitle("Version 6.2");
Element adsElement = new Element();
adsElement.setTitle("Advertise with us");
View aboutPage = new AboutPage(getActivity())
.isRTL(false)
.addItem(versionElement)
.addItem(adsElement)
.addGroup("Connect with us")
.addEmail("elmehdi.sakout@gmail.com")
.addFacebook("the.medy")
.addTwitter("medyo80")
.addYoutube("UCdPQtdWIsg7_pi4mrRu46vA")
.addPlayStore("com.ideashower.readitlater.pro")
.addInstagram("medyo80")
.addGitHub("medyo")
.create();
setContentView(aboutPage);
return rootView;
}
我在倒数第二行遇到错误,如何解决这个问题。
以下库将在 api 20+ 中工作
图书馆 https://github.com/medyo/android-about-page
在您未显式调用 setContentView
的片段上,您 return 膨胀后的视图,就像现在一样。因此,与其调用 setContentView
,不如考虑将视图 aboutPage
添加到 rootView
或其子视图之一。
例如,假设您的布局 R.layout.fragment_navigation
包含 ID 为 content
的 LinearLayout
(或任何其他 ViewGroup
)。你会在你的 return 声明之前这样做:
LinearLayout content = (LinearLayout) rootView.findViewById(R.id.content);
content.addView(aboutPage); //<-- Instead of setContentView(aboutPage)
你得根据你的布局调整这个,我不知道里面是什么。
完整示例
fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container">
</RelativeLayout>
CustomFragment.java
public class FragmentExample extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup viewGroup = (ViewGroup) inflater.inflate(R.layout.fragment, container, false);
Element versionElement = new Element();
versionElement.setTitle("Version 6.2");
Element adsElement = new Element();
adsElement.setTitle("Advertise with us");
View aboutPage = new AboutPage(getActivity())
.isRTL(false)
.addItem(versionElement)
.addItem(adsElement)
.addGroup("Connect with us")
.addEmail("elmehdi.sakout@gmail.com")
.addFacebook("the.medy")
.addTwitter("medyo80")
.addYoutube("UCdPQtdWIsg7_pi4mrRu46vA")
.addPlayStore("com.ideashower.readitlater.pro")
.addInstagram("medyo80")
.addGitHub("medyo")
.create();
viewGroup.addView(aboutPage);
return viewGroup;
}
}
如果您只需要 aboutPage 而不是将 return 语句更改为 return aboutPage;
setContentView() 用于 Activity,对于 Fragment,您必须 return onCreateView() 方法上的膨胀布局,如下所示:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.article_view, container, false);
}
希望对您有所帮助。
in Android X 你可以先导入
import androidx.fragment.app.Fragment
然后在构造函数中像 R.layout.fragment_navigation 一样传递布局 ID,然后覆盖 onViewCreated 方法(它也更安全),而不是只实现 onCreateView()。
示例:
import android.view.View
import android.widget.*
import androidx.fragment.app.Fragment
class MahrInCoinFragment : Fragment(R.layout.fragment_navigation) {
private lateinit var mCoin: Coin
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Load coin saved data or use default value
val cost: Int = Hawk.get(Constant.COIN_COST_KEY, Constant.DEFAULT_COIN_PRICE)
val date: String = Hawk.get(Constant.COIN_DATE_KEY, Constant.DEFAULT_COIN_DATE)
updateCoin(Coin().apply { this.cost = cost; this.date = date })
// Handle listeners
view.findViewById<Button>(R.id.btn_calculate).setOnClickListener(this)
view.findViewById<ImageButton>(R.id.btn_update).setOnClickListener(this)
}
我正在尝试在片段中调用库,但不知道如何在片段中设置它我已经在主片段中完成了 activity 但是在我的片段中设置 setContentView 时出现错误 编译依赖
compile 'com.github.medyo:android-about-page:1.0.2'
我的片段内容查看
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_navigation, container, false);
Element versionElement = new Element();
versionElement.setTitle("Version 6.2");
Element adsElement = new Element();
adsElement.setTitle("Advertise with us");
View aboutPage = new AboutPage(getActivity())
.isRTL(false)
.addItem(versionElement)
.addItem(adsElement)
.addGroup("Connect with us")
.addEmail("elmehdi.sakout@gmail.com")
.addFacebook("the.medy")
.addTwitter("medyo80")
.addYoutube("UCdPQtdWIsg7_pi4mrRu46vA")
.addPlayStore("com.ideashower.readitlater.pro")
.addInstagram("medyo80")
.addGitHub("medyo")
.create();
setContentView(aboutPage);
return rootView;
}
我在倒数第二行遇到错误,如何解决这个问题。 以下库将在 api 20+ 中工作 图书馆 https://github.com/medyo/android-about-page
在您未显式调用 setContentView
的片段上,您 return 膨胀后的视图,就像现在一样。因此,与其调用 setContentView
,不如考虑将视图 aboutPage
添加到 rootView
或其子视图之一。
例如,假设您的布局 R.layout.fragment_navigation
包含 ID 为 content
的 LinearLayout
(或任何其他 ViewGroup
)。你会在你的 return 声明之前这样做:
LinearLayout content = (LinearLayout) rootView.findViewById(R.id.content);
content.addView(aboutPage); //<-- Instead of setContentView(aboutPage)
你得根据你的布局调整这个,我不知道里面是什么。
完整示例
fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container">
</RelativeLayout>
CustomFragment.java
public class FragmentExample extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewGroup viewGroup = (ViewGroup) inflater.inflate(R.layout.fragment, container, false);
Element versionElement = new Element();
versionElement.setTitle("Version 6.2");
Element adsElement = new Element();
adsElement.setTitle("Advertise with us");
View aboutPage = new AboutPage(getActivity())
.isRTL(false)
.addItem(versionElement)
.addItem(adsElement)
.addGroup("Connect with us")
.addEmail("elmehdi.sakout@gmail.com")
.addFacebook("the.medy")
.addTwitter("medyo80")
.addYoutube("UCdPQtdWIsg7_pi4mrRu46vA")
.addPlayStore("com.ideashower.readitlater.pro")
.addInstagram("medyo80")
.addGitHub("medyo")
.create();
viewGroup.addView(aboutPage);
return viewGroup;
}
}
如果您只需要 aboutPage 而不是将 return 语句更改为 return aboutPage;
setContentView() 用于 Activity,对于 Fragment,您必须 return onCreateView() 方法上的膨胀布局,如下所示:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.article_view, container, false);
}
希望对您有所帮助。
in Android X 你可以先导入
import androidx.fragment.app.Fragment
然后在构造函数中像 R.layout.fragment_navigation 一样传递布局 ID,然后覆盖 onViewCreated 方法(它也更安全),而不是只实现 onCreateView()。 示例:
import android.view.View
import android.widget.*
import androidx.fragment.app.Fragment
class MahrInCoinFragment : Fragment(R.layout.fragment_navigation) {
private lateinit var mCoin: Coin
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Load coin saved data or use default value
val cost: Int = Hawk.get(Constant.COIN_COST_KEY, Constant.DEFAULT_COIN_PRICE)
val date: String = Hawk.get(Constant.COIN_DATE_KEY, Constant.DEFAULT_COIN_DATE)
updateCoin(Coin().apply { this.cost = cost; this.date = date })
// Handle listeners
view.findViewById<Button>(R.id.btn_calculate).setOnClickListener(this)
view.findViewById<ImageButton>(R.id.btn_update).setOnClickListener(this)
}