java - 包含不同 Fragment 的 HashMap(或 ArrayList)

标签 java android android-fragments hashmap

对于某种情况,我想制作一个HashMap,其中键是 fragment ,值是整数。然而,每个不同的 Fragment 都有不同的类型,并且不仅仅是 Fragment 类型。所以以下(这是我最初尝试的)不起作用:

HashMap<Fragment, Integer> hmap = new HashMap<>();
hmap.put(new ExampleFragment(), 5);
hmap.put(new AnotherFragment(), 2);

现在这当然不起作用,因为 ExampleFragmentAnotherFragment 不是放入 HashMap 中的正确类型。
编辑:我在 AndroidStudio 中收到以下错误:第一个参数类型错误。找到:'com.example.sword.rpg.ExampleFragment',必需:'android.app.Fragment'

现在我的问题是:如何在同一个 HashMap (或 ArrayList)中存储 Fragment 的不同子类,并且是这可能吗?

我确实有针对我的具体情况的解决方法,但它并不像这个那样简洁。所以我还是很好奇。

编辑:我确实混淆了 Fragmentandroid.support.v4.app.Fragment,谢谢:)

最佳答案

对于你的问题,它应该可以工作,就像这样,那么你是否有可能混淆了你的“fragment ”类型?典型的 android 命名空间中有一些(例如 android.app.Fragment 与 android.support.v4.app.Fragment):

import android.app.Fragment;
import android.util.Log;
import java.util.HashMap;

public class TestHashMap {

      private HashMap<Fragment, Integer> test = new HashMap<>();

      public static class ExampleFragment extends Fragment {
          public ExampleFragment() { super(); }
          public String toString() { return "ExampleFragment[hash:"+hashCode()+"]"; }
          public void someOtherMethod() {}
      }

      public static class AnotherFragment extends Fragment {
          public AnotherFragment() { super(); }
          public String toString() { return "AnotherFragment[hash:"+hashCode()+"]"; }
      }

      public void test() {
          test.put(new ExampleFragment(),1);
          test.put(new AnotherFragment(),2);
          Log.d("TestHashMap","size = "+test.size());
          Log.d("TestHashMap",test.toString());
      }
  }

产生:

D/TestHashMap: size = 2
D/TestHashMap: {AnotherFragment[hash:230309272]=2, ExampleFragment[hash:5536635]=1}

关于java - 包含不同 Fragment 的 HashMap(或 ArrayList),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49340106/

相关文章:

android - 如何动态更新 View 寻呼机项目标题

android - 应用程序内容位于 android L 中的导航栏后面

java - 如何获取另一个fragment中EditText中TimePickerDialog的时间?

android - 如何阻止 Android ViewPager 滚动到某个点?

java - 如何将 !.equals 与字符串一起使用?

java - Java 中的许多新行和奇怪的分布

android - 线程和处理程序的区别

Android "Permission Denial: can' t 使用相机”

java - finally block 对于清理代码真的有必要吗(比如关闭流)?

java - 底部导航 View : Glitch that overwrites other layout