在 ANDROID 中解析一个意图
PARSE AN INTENT IN ANDROID
我在 Main_Screen.class 有这个代码:
add_btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent add_user = new Intent(Main_Screen.this, Add_Update_User.class);
add_user.putExtra("called", "add");
add_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(add_user);
finish();
}
});
我的理解是,我正在向 "Add_Update_User.class" 发送存储在 "called" 中的字符串 "add" 和标志
现在,我在 "Add_Update_User.class" 有这段代码:
String called_from = getIntent().getStringExtra("called");
if (called_from.equalsIgnoreCase("add"))
{
add_view.setVisibility(View.VISIBLE);
update_view.setVisibility(View.GONE);
}
else
{
update_view.setVisibility(View.VISIBLE);
add_view.setVisibility(View.GONE);
USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID"));
Contact c = dbHandler.Get_Contact(USER_ID);
add_name.setText(c.getName());
add_mobile.setText(c.getPhoneNumber());
add_email.setText(c.getEmail());
}
我在 "Add_Update_User.class" 中的理解 我在 Intent 中获取从 "Main_Screen.class" 发送的值,将值 "add" 存储在字符串 "called_from" 中,然后它将 "called from" 与字符串 "add" 进行比较,如果比较为真,则视图变为可见并消失,但如果不为真,则设置视图的可见性,我的问题如下:
代码的这一部分到底是什么?
USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID"));
确实,您正在通过 Intent 将 "add" 值从 main_screen 发送到 add_update_user。
除了您提取的用户 ID 是一个字符串之外,您指向的那一行是相同的。但是,您的变量 USER_ID 可能是 "int" 类型。
因此你的 main_screen 中应该有类似
的内容
add_user.putExtra("USERID", "the id of the user you want to put");
你用
检索它
getIntent().getStringExtra("USER_ID")
然后将字符串解析为整数,以匹配 user_id 与 Integer.parseInt(...)
的类型
因此你需要问自己的真正问题是为什么你没有函数 add_user.putExtra("USER_ID",...) 如果你不需要它那么你可以删除该行你关心的。
我在 Main_Screen.class 有这个代码:
add_btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent add_user = new Intent(Main_Screen.this, Add_Update_User.class);
add_user.putExtra("called", "add");
add_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(add_user);
finish();
}
});
我的理解是,我正在向 "Add_Update_User.class" 发送存储在 "called" 中的字符串 "add" 和标志
现在,我在 "Add_Update_User.class" 有这段代码:
String called_from = getIntent().getStringExtra("called");
if (called_from.equalsIgnoreCase("add"))
{
add_view.setVisibility(View.VISIBLE);
update_view.setVisibility(View.GONE);
}
else
{
update_view.setVisibility(View.VISIBLE);
add_view.setVisibility(View.GONE);
USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID"));
Contact c = dbHandler.Get_Contact(USER_ID);
add_name.setText(c.getName());
add_mobile.setText(c.getPhoneNumber());
add_email.setText(c.getEmail());
}
我在 "Add_Update_User.class" 中的理解 我在 Intent 中获取从 "Main_Screen.class" 发送的值,将值 "add" 存储在字符串 "called_from" 中,然后它将 "called from" 与字符串 "add" 进行比较,如果比较为真,则视图变为可见并消失,但如果不为真,则设置视图的可见性,我的问题如下:
代码的这一部分到底是什么?
USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID"));
确实,您正在通过 Intent 将 "add" 值从 main_screen 发送到 add_update_user。
除了您提取的用户 ID 是一个字符串之外,您指向的那一行是相同的。但是,您的变量 USER_ID 可能是 "int" 类型。
因此你的 main_screen 中应该有类似
的内容add_user.putExtra("USERID", "the id of the user you want to put");
你用
检索它 getIntent().getStringExtra("USER_ID")
然后将字符串解析为整数,以匹配 user_id 与 Integer.parseInt(...)
的类型因此你需要问自己的真正问题是为什么你没有函数 add_user.putExtra("USER_ID",...) 如果你不需要它那么你可以删除该行你关心的。