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 值由您决定

希望对您有所帮助!