包含不同片段的HashMap(或ArrayList)

问题描述 投票:0回答:1

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

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

现在这当然不会起作用,因为ExampleFragmentAnotherFragment不是正确的类型放在HashMap。 编辑:我在AndroidStudio中收到以下错误:Wrong 1st argument type. Found: 'com.example.sword.rpg.ExampleFragment', required: 'android.app.Fragment'

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

对于我的具体情况,我确实有一个解决方法,但它并不像这个那样整洁。所以我仍然很好奇。

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

java android android-fragments hashmap
1个回答
1
投票

对于你的问题,它应该可以工作,因为你可以混淆你的“片段”类型吗?在典型的android命名空间中有一些(例如android.app.Fragment vs 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}
© www.soinside.com 2019 - 2024. All rights reserved.