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

Android 如何在同一个tabAdapter中传递两个不同的ID?,android,listview,android-fragments,tabs,bundle,Android,Listview,Android Fragments,Tabs,Bundle,在主页中,它有列表视图(从MySQL检索)和一个弹出菜单,其中弹出菜单有一个视图页面视图还具有列表视图 主页 查看 单击主页或查看列表时,它将转到片段,该片段有4个选项卡,允许用户根据ID进行编辑 单击主页列表时 public static int ID; listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override

主页中,它有
列表视图
(从MySQL检索)和一个
弹出菜单
,其中
弹出菜单
有一个视图页面视图还具有
列表视图

主页

查看

单击主页查看列表时,它将转到片段,该片段有4个选项卡,允许用户根据ID进行编辑

单击主页列表时

  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);
                }
            });
编辑信息

 Bundle bundle = this.getArguments();
        if (getArguments() != null) {
            ID = bundle.getInt("ID");
        }
        Toast.makeText(getActivity(),"SS"+ID,Toast.LENGTH_LONG).show();
当我点击主页中的列表时,它会在主页和编辑信息中显示正确的ID。但当我单击视图中的列表时,它会显示正确的ID,但在编辑信息中不会显示ID

我添加
bundle.putInt(“ID”,View.ID)
bundle.putInt(“ID”,HomePage.ID)之后,它适用于所有,但不适用于主页!主页列表显示其ID,但在编辑信息中显示0 ID

如何解决这个问题???
我们如何区分列表是“全部单击”还是“查看”???谢谢

放置另一个
意图
额外内容以指示用户单击的位置。例如,在主页中
列表视图
监听器
中:

intent.putExtra("FROM_HOME", true);
在另一个
ListView

intent.putExtra("FROM_HOME", false);
总之,您的
Intent
有三个额外功能,您可以通过活动b中的
getIntent()
获得:

让我们为这个活动介绍三个变量

private int _id;
private String _name;
private boolean _fromHome;
然后在
onCreate()
中,您可以获得如下意图:

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

现在,您的活动已经具备了决定应该做什么的所有必要信息。

只是为了确保我理解问题:ID正确传输到同一目标(ActivityB)通过点击主页中的列表项,而不是点击视图中的列表项,尽管您在侦听器中使用了相同的代码?没有最小值、完整值等。。。。很难确定,但我对“publicstaticintid”有一种不好的感觉。这样,ID值就有了某种方式的泄漏,而不是仅从其源(视图或主页)传输。如果您希望我进一步研究这个问题,那么我确实需要足够的代码来重现错误。@0X0nosugar谢谢,在阅读了另一个问题的评论后,我更加确定您不应该使用公共变量作为ID。但我也看到您已经获得了所需的所有帮助:)@0X0nosugar感谢您的关注我应该在tabAdapter中更改什么?@John Joe-在tab adapter中,您可以使用ActivityB中的值。您需要ID,所以您可以编写“bundle.putin(“ID”,“u ID”);“我认为您可以更好地更改选项卡适配器的构造函数,以传递_ID(->“封装良好”;)的值)
private int _id;
private String _name;
private boolean _fromHome;
Intent intent = getIntent();
_id = intent.getIntExtra("ID", -1);
_name = intent.getStringExtra("name");
_fromHome = intent.getBooleanExtra("FROM_HOME", false);