Intent Extras.getString()无法正确比较 - Android

问题描述 投票:0回答:2

我有一个名为searchProcedures的Activity,它允许用户从医疗程序的列表视图中进行选择。我从另外两个名为searchHome和describeVisit的活动导航到此活动。我需要一种方法让searchProcedures知道它应该导航回onClick。所以我从searchHome或describeVisit(key:“sentFrom”value“”)传递一个intent.extra。然后在searchProcedures中,我使用以下代码来确定要导航到的类。

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

检查日志值,正在向活动传递正确的值,但是当我检查extras.getString("sentFrom") == "searchHome/describeVisit"时它返回false,并且returnIntent保持未初始化状态。我试过在.getString之后放置.toString无济于事。

android android-intent extras
2个回答
1
投票

1.

==比较对象引用,而不是内容

你应该使用:

"searchHome".equals(extras.getString("sentFrom"))

记得检查空白,......

2.

您可以在SearchProceduresActivity中使用静态变量来检查它的来源

SearchProceduresActivity

public static int sFrom = SEARCHHOME;

SearchHomeActivity:

Intent myIntent = new Intent(SearchHomeActivity.this, SearchProceduresActivity.class);
SearchProceduresActivity.sFrom = SEARCHHOME;
startActivity(myIntent);

DescribeVisitActivity:

Intent myIntent = new Intent(DescribeVisitActivity.this, SearchProceduresActivity.class);
SearchProceduresActivity.sFrom = DESCRIBEVISIT;
startActivity(myIntent);

SEARCHHOME,DESCRIBEVISIT值取决于您

希望这有帮助!


0
投票

字符串比较应使用等于= =

© www.soinside.com 2019 - 2024. All rights reserved.