调用片段

时间:2018-04-23 15:28:59

标签: java android android-fragments

首先,我首先要说我是Java和Android Studio的新手,所以请耐心等待。我的背景已经在Visual Basic中回归了。

我有一项活动试图通过输入的UPC验证输入的内容是否为有效的项目编号。只有一场比赛都很好。当UPC输入带回多个匹配项时,我的问题就开始了。我试图做的事情(第一次使用片段)是用回收者视图替换屏幕的一部分,显示匹配的项目和描述。

当有多个项目回来时,我使用以下代码调用名为setupMulitpleItems的事件:

public void setupMultiItems(String mScan){
Timber.d("Multiple matching Items");

Bundle bundle = new Bundle();
bundle.putString("valuesArray",mScan);
SelectItemFragment fragobj = new SelectItemFragment();
fragobj.setArguments(bundle);
FragmentManager fragmentManager=getFragmentManager();
FragmentTransaction fragmentTransaction  = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.include2,  fragobj);


fragmentTransaction.commit();

不确定此代码中有多少部分实际可行,但我在替换行上显示下划线。

     "'replace(int, android.app.Fragment)' in 'android.app.FragmentTransaction' cannot be applied to '(int, com.procatdt.stockright.activities.SelectItemFragment)'" 
meesage.

我正在使用以下导入片段。

 import android.app.FragmentTransaction;
 import android.app.Fragment;
 import android.app.FragmentManager;

如果我想使用Fragment,我还会包含当前正在运行的活动的XML。

         <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBackgroundGray"
    tools:layout="@layout/fragment_select_item"
    tools:context="com.procatdt.stockright.activities.PutAwayAreaActivity">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"

       >

        <include
            android:id="@+id/include2"
            layout="@layout/frm1"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_gravity="left" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:paddingLeft="5dp"
        android:orientation="vertical">

        <include
            android:id="@+id/include"
            layout="@layout/layout_numpad5"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginStart="220dp"
            android:layout_weight="1"
            android:layout_gravity="right"
           />

    </LinearLayout>

</RelativeLayout>

我正在尝试用Fragment替换include2。 希望这足够的信息,但如果有人需要看到更多让我知道,我生病附加代码。

1 个答案:

答案 0 :(得分:3)

你只需要将片段的对象传递给replace方法,不需要传递类声明和类的类型

所以只需删除

// this is enough
fragmentTransaction.replace(R.id.include2,  fragobj);

// remove this
//fragmentTransaction.replace(R.id.include2,android.app.Fragment  SelectItemFragment);