0

フラグメントでライブラリを呼び出そうとしていますが、フラグメントでライブラリを設定する方法がわかりません メイン アクティビティで実行しましたが、フラグメントで 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;
}

これを解決する方法は、最後から 2 行目にエラーがあります。次のライブラリは、api 20+ ライブラリで動作します https://github.com/medyo/android-about-page

4

4 に答える 4

8

明示的に呼び出さないフラグメントではsetContentView、ビューをインフレートした後、そのまま返します。そのため、呼び出す代わりに、ビューをまたはその子ビューの 1 つにsetContentView追加することを検討してください。aboutPagerootView

たとえば、レイアウトにID の がR.layout.fragment_navigation含まれているLinearLayoutとします。return ステートメントの前に、次のようにします。ViewGroupcontent

LinearLayout content = (LinearLayout) rootView.findViewById(R.id.content);
content.addView(aboutPage); //<-- Instead of setContentView(aboutPage)

これをレイアウトに合わせて調整する必要があります。中に何が入っているかわかりません。

完全な例

ここに画像の説明を入力

フラグメント.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;
    }
}
于 2016-04-26T16:05:52.440 に答える
1

setContentView() はアクティビティ用です。フラグメントの場合は、次のように 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);
}

お役に立てば幸いです。

于 2016-04-26T20:54:47.517 に答える