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);