Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在非片段类中使用FragmentManager_Java_Android_Android Fragments - Fatal编程技术网

Java 如何在非片段类中使用FragmentManager

Java 如何在非片段类中使用FragmentManager,java,android,android-fragments,Java,Android,Android Fragments,我已经创建了一个扩展BaseAdapter的CustomAdapter类,因此无法将该类扩展为片段 在CustomAdapter类中,我创建了带有项目的自定义ListView。点击Uppon按钮,我想去另一个片段 正在MyLocationFragment.java中初始化CustomAdapter类。在这个片段中,我让用户从ListView中选择一个项目,当用户单击TextView/项目旁边的按钮时,我想转到HomeScreenFragment,并使用TextView中存储的值执行一些操作,该按

我已经创建了一个扩展BaseAdapter的CustomAdapter类,因此无法将该类扩展为片段

在CustomAdapter类中,我创建了带有项目的自定义ListView。点击Uppon按钮,我想去另一个片段

正在MyLocationFragment.java中初始化CustomAdapter类。在这个片段中,我让用户从ListView中选择一个项目,当用户单击TextView/项目旁边的按钮时,我想转到HomeScreenFragment,并使用TextView中存储的值执行一些操作,该按钮属于同一位置

MyLocationFragment在本例中重要的部分,否则太大:

上述代码导致无法解析getFragmentManager

你知道我怎样才能从非片段类到达HomeScreenFragment吗


任何帮助都将不胜感激。

您应该做的是在实现BaseAdapter的类中为上下文创建一个字段,并使用该字段而不是您所做的。该字段的初始化将通过构造函数完成。

我的CustomAdapter类中确实有字段上下文,但这无助于我完成所需的任务。如果我添加context.getfragmentmanager,则不会发生任何情况。上下文正在CustomAdapter类的构造函数中传递。您的意思是说上述代码段中的myContext与通过构造函数初始化的相同吗?顺便说一句,您正在使用支持库吗?因为您在代码中编写了getSupportFragmentManager,但错误是无法解析getFragmentManager;。我建议你组织导入。不,不是我在测试某个东西是否可行。构造函数中的上下文是Context ctx。一般来说:不,我不使用FragmentManager的支持库,这也是一个测试,它是否可以工作wayclass CustomAdapter{Context mContext;…}现在在这里编写listView.setAdapteryourAdapter;listView.SetOnItemClickListener新建OnItemClickListener{@Override public void onItemClickAdapterView父级,视图视图,int位置,长id{Toast.makeTextgetApplicationContext,单击ListItem编号+位置,Toast.LENGTH_long.show;};我理解你的提议,但我的列表视图中有两个按钮。并在CustomAdapter类中设置单击侦听器。我是否应该以某种方式将它们转移到片段中呢?您可以创建一个方法,要求在活动中传递从适配器调用的对象,然后适配器从活动中激发一个新片段。android 4.2和更高版本中有嵌套片段支持,但你用这种方式切断了应用程序中约30%的android用户。不确定我是否理解正确。但是没有更简单的方法吗?我的意思是ListView被大量使用,它们不是在片段中使用吗?找不到有关此的教程。我只想在ListView中单击按钮时存储一个值,并将其用于其他片段。您也可以使用支持库访问getChildFragmentManager,但我个人认为,只有在GUI中实际嵌套某些内容时,才应使用嵌套片段。实际上,上面的方法是1。在活动2上创建方法。将活动传递给适配器使用软件参考3。调用activity.yourMethodyourObject 4。打开新活动/片段
if(adminMode) {
            ArrayList<String> data = new ArrayList<>(Arrays.asList(locationsArray));
            CustomAdapter adapter = new CustomAdapter(data, getActivity());

            // Assign adapter to ListView
            listView.setAdapter(adapter);

        }
holder.localData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        fMyLocation = new MyLocationFragment();
        // Store selected values into Strings and pass them to setter method
        String selectedLocation = (String) holder.items.getText().toString();
        String [] locationsArrayValues = v.getResources().getStringArray(R.array.locations_array_value);
        String selectedLocationUrl = locationsArrayValues[position];
        fMyLocation.setInputLocation(selectedLocation);
        fMyLocation.setInputLocationUrl(selectedLocationUrl);

        FragmentActivity myContext;

        // On Item Click, go to the HomeScreen
        Fragment fragment = new HomeScreenFragment();
        FragmentManager fManager = myContext.getSupportFragmentManager();
        FragmentTransaction fTransaction = fManager.beginTransaction();
        fTransaction.replace(R.id.fragment_holder, fragment);
        fTransaction.commit();






    }
});