android - fragment 已创建但在 listView 的 itemClick 上不可见。卡在这里

标签 android android-fragments

这是我的 fragment Activity 代码

public class Show extends Fragment {
private int local;
private String[] names = {"Alexndra Daddario", "Anne Hathaway", "Dakota Johnson",
        "Emma Stone", "Emma Watson", "Emmy Rosum", "Jessica Alba",
        "Kristen Stewart", "Marian Cotillard", "Natalie Portman"};
private int[] res = {R.drawable.alexandra_daddario, R.drawable.anne_hathaway, R.drawable.dakota_johnson, R.drawable.emma_stone, R.drawable.emma_watson, R.drawable.emmy_rosum, R.drawable.jessica_alba, R.drawable.kristen_stewart, R.drawable.marion_cotillard, R.drawable.natalie_portman};

public Show() {
    Log.d("dbg", "constructor of fragment");
    // Empty constructor required
}

public static Show newInstance(int position) {
    Bundle bndl = new Bundle();
    bndl.putInt("POSITION", position);
    Show show = new Show();

    show.setArguments(bndl);
    Log.d("dbg", "new instance just called");
    return show;
}

public void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );

    Log.d("dbg", "onCreate of fragment called");

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    local = getArguments().getInt("POSITION");

    View rootView = inflater.inflate( R.layout.fragment_show_layout, container, false );
    ImageView iv = rootView.findViewById(R.id.display);
    TextView tv = rootView.findViewById(R.id.abhinetri_ka_naam);

    Drawable d = getResources().getDrawable(res[local]);
    iv.setImageDrawable(d);
    tv.setText(names[local]);
    rootView.postInvalidate();
    Log.d("dbg", "onCreateView of fragment just called");
    return rootView;
}

这是我的 Listview 的点击监听器中的代码。这是我创建 fragment 的地方,通过传递单击项目的位置,该位置将成为该 fragment 的参数。使用位置我正在创建 View 。就是这样,但在我的应用程序中,当我点击一个项目时没有任何反应。

lv.setOnItemClickListener( new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Show show = Show.newInstance(position);

            FragmentManager fm = getSupportFragmentManager();
            fm.beginTransaction().add(0, show).commit()

            Log.d("dbg", "Item clicked");
        }
    } );

最佳答案

fm.beginTransaction().add(0, show).commit()

/**
     * Add a fragment to the activity state.  This fragment may optionally
     * also have its view (if {@link Fragment#onCreateView Fragment.onCreateView}
     * returns non-null) into a container view of the activity.
     * 
     * @param containerViewId Optional identifier of the container this fragment is
     * to be placed in.  If 0, it will not be placed in a container.
     * @param fragment The fragment to be added.  This fragment must not already
     * be added to the activity.
     * @param tag Optional tag name for the fragment, to later retrieve the
     * fragment with {@link FragmentManager#findFragmentByTag(String)
     * FragmentManager.findFragmentByTag(String)}.
     * 
     * @return Returns the same FragmentTransaction instance.
     */
    public abstract FragmentTransaction add(@IdRes int containerViewId, Fragment fragment,
            @Nullable String tag);

您将 0 作为您的 containerViewId 传递。所以它没有放在容器中。在那里传递您的容器 View ID。

关于android - fragment 已创建但在 listView 的 itemClick 上不可见。卡在这里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50780354/

相关文章:

android - SurfaceTexture.getTransformMatrix 的返回值是什么意思,谁能解释一下?

java - 将日期转换为SimpleDateFormat时引发不可解析的日期错误

android - 如何使用单个查询更新所有行中的列 - Android Room Database

java - Android:下载 flickr 图像

android - 什么是 fragment_main.xml?

android - ForEach 布局或屏幕中的元素

java - 将位置数据从 fragment 传递到 Android 中的 Activity

android - 使用安卓 :action to launch activity from settings

android - 根据 int 值更改 textswitcher/viewswitcher 的 textColor?

java - Android fragment : How to work with views on other layouts?