如何在同一个 tabAdapter 中传递两个不同的 ID?
How can I pass two different ID in same tabAdapter?
在 HomePage 中,它有 listView
(从 MySQL 检索)和一个 popup Menu
,其中 popup Menu
有查看 页面。 查看还有listView
.
首页
查看
当点击HomePage或View列表时,会转到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 拥有决定应该做什么的所有必要信息。
在 HomePage 中,它有 listView
(从 MySQL 检索)和一个 popup Menu
,其中 popup Menu
有查看 页面。 查看还有listView
.
首页
查看
当点击HomePage或View列表时,会转到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 拥有决定应该做什么的所有必要信息。