如何在同一个 tabAdapter 中传递两个不同的 ID?

How can I pass two different ID in same tabAdapter?

HomePage 中,它有 listView(从 MySQL 检索)和一个 popup Menu ,其中 popup Menu查看 页面。 查看还有listView.

首页

查看

当点击HomePageView列表时,会转到fragment,其中有4 个选项卡,允许用户根据 ID 进行编辑。

HomePage 列表被点击时

  public static int ID;
      listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> listView, View view,
                                        int position, long id) {
                    ID = search.get(position).getID();
                    Toast.makeText(getApplicationContext(), "Edit" + ID, Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(getApplicationContext(), ActivityB.class);
                    intent.putExtra("ID", ID);  // pass to tabAdapter
                    intent.putExtra("name", name); // pass to tabAdapter
                    startActivity(intent);
                }
            });

View 单击时

 public static int ID;
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> listView, View view,
                                        int position, long id) {
                    ID = search.get(position).getID();
                    Toast.makeText(getApplicationContext(), "Edit" + ID, Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(getApplicationContext(), ActivityB.class);
                    intent.putExtra("ID", ID); // pass to tabAdapter
                    intent.putExtra("name", name); // pass to tabAdpter
                    startActivity(intent);
                }
            });

TabAdapter

  public Fragment getItem(int index) {
        // TODO Auto-generated method stub

        if(index == 0) {
            Fragment fragment=new EditInformation();
            Bundle bundle = new Bundle();
            bundle.putInt("ID", HomePage.ID);
            fragment.setArguments(bundle);
            return fragment;

        }
}

编辑信息

 Bundle bundle = this.getArguments();
        if (getArguments() != null) {
            ID = bundle.getInt("ID");
        }
        Toast.makeText(getActivity(),"SS"+ID,Toast.LENGTH_LONG).show();

当我单击主页中的列表时,它会在主页和 EditInformation 中显示正确的 ID。但是当我在视图中单击列表时,它显示正确的 ID, 但在 EditInformation 中没有显示 ID。

我在 bundle.putInt("ID", HomePage.ID); 后添加 bundle.putInt("ID", View.ID);,它适用于 All,但不适用于 HomePage! HomePage 列表显示其 ID,但在 EditInformation 中显示 0 id。

如何解决??? 我们如何区分列表是从 All 还是 View 点击???谢谢

添加另一个 Intent 额外内容以指示用户点击的位置。例如在HomePage中的ListView中的OnItemClickListener:

intent.putExtra("FROM_HOME", true);

而在OnItemClickListener在其他ListView

intent.putExtra("FROM_HOME", false);

总而言之,您的 Intent 有三个额外功能,您可以通过 ActivityB 中的 getIntent() 获得:

为此我们引入三个变量activity

private int _id;
private String _name;
private boolean _fromHome;

然后在 onCreate() 中,您可以获得这样的 intent extras:

Intent intent = getIntent();
_id = intent.getIntExtra("ID", -1);
_name = intent.getStringExtra("name");
_fromHome = intent.getBooleanExtra("FROM_HOME", false);

现在您的 activity 拥有决定应该做什么的所有必要信息。