Intent Extras.getString() 比较不正确 -- Android
Intent Extras.getString() not comparing correctly -- Android
我有一个名为 searchProcedures 的 Activity,它允许用户从医疗程序的列表视图中 select。我从另外两个名为 searchHome 和 describeVisit 的活动导航到此 activity。我需要一种方法让 searchProcedures 知道应该将哪个 activity 导航回 onClick。因此,我从 searchHome 或 describeVisit(键:"sentFrom" 值“”)传递了一个 intent.extra。然后在 searchProcedures 中,我使用以下代码来确定要导航到哪个 class。
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if(!extras.isEmpty()){
if(extras.containsKey("sentFrom")){
if(extras.getString("sentFrom") == "searchHome"){
returnIntent = new Intent(searchProcedures.this, searchHome.class);
}
else if(extras.getString("sentFrom") == "describeVisit"){
returnIntent = new Intent(searchProcedures.this, describeVisit.class);
}
else{
Log.d("failed", "the value of getString is " + extras.getString("sentFrom"));
}
}
}
检查日志值,正确的值正在传入和传出 activity,但是当我检查 extras.getString("sentFrom") == "searchHome/describeVisit"
时它返回为 false,并且 returnIntent 仍未初始化。我试过将 .toString 放在 .getString 之后,但无济于事。
字符串比较应该使用相等而不是===
1.
== 比较对象引用,而不是内容
你应该使用:
"searchHome".equals(extras.getString("sentFrom"))
记得勾选空格 space,...
2.
您可以在 SearchProceduresActivity 中使用静态变量来检查它的来源
SearchProceduresActivity
public static int sFrom = SEARCHHOME;
SearchHomeActivity:
Intent myIntent = new Intent(SearchHomeActivity.this, SearchProceduresActivity.class);
SearchProceduresActivity.sFrom = SEARCHHOME;
startActivity(myIntent);
描述访问活动:
Intent myIntent = new Intent(DescribeVisitActivity.this, SearchProceduresActivity.class);
SearchProceduresActivity.sFrom = DESCRIBEVISIT;
startActivity(myIntent);
SEARCHHOME、DESCRIBEVISIT 值由您决定
希望对您有所帮助!
我有一个名为 searchProcedures 的 Activity,它允许用户从医疗程序的列表视图中 select。我从另外两个名为 searchHome 和 describeVisit 的活动导航到此 activity。我需要一种方法让 searchProcedures 知道应该将哪个 activity 导航回 onClick。因此,我从 searchHome 或 describeVisit(键:"sentFrom" 值“”)传递了一个 intent.extra。然后在 searchProcedures 中,我使用以下代码来确定要导航到哪个 class。
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if(!extras.isEmpty()){
if(extras.containsKey("sentFrom")){
if(extras.getString("sentFrom") == "searchHome"){
returnIntent = new Intent(searchProcedures.this, searchHome.class);
}
else if(extras.getString("sentFrom") == "describeVisit"){
returnIntent = new Intent(searchProcedures.this, describeVisit.class);
}
else{
Log.d("failed", "the value of getString is " + extras.getString("sentFrom"));
}
}
}
检查日志值,正确的值正在传入和传出 activity,但是当我检查 extras.getString("sentFrom") == "searchHome/describeVisit"
时它返回为 false,并且 returnIntent 仍未初始化。我试过将 .toString 放在 .getString 之后,但无济于事。
字符串比较应该使用相等而不是===
1.
== 比较对象引用,而不是内容
你应该使用:
"searchHome".equals(extras.getString("sentFrom"))
记得勾选空格 space,...
2.
您可以在 SearchProceduresActivity 中使用静态变量来检查它的来源
SearchProceduresActivity
public static int sFrom = SEARCHHOME;
SearchHomeActivity:
Intent myIntent = new Intent(SearchHomeActivity.this, SearchProceduresActivity.class);
SearchProceduresActivity.sFrom = SEARCHHOME;
startActivity(myIntent);
描述访问活动:
Intent myIntent = new Intent(DescribeVisitActivity.this, SearchProceduresActivity.class);
SearchProceduresActivity.sFrom = DESCRIBEVISIT;
startActivity(myIntent);
SEARCHHOME、DESCRIBEVISIT 值由您决定
希望对您有所帮助!