簡體   English   中英

putextra和getextra不將字符串傳遞給下一個活動

[英]putextra and getextra not passing string to next activity

我有三個活動A,B和C

在我的B活動中,我有一個imageview,當我從活動A到B獲得一個String時,該imageview應該可見。

當我從活動C到B獲得字符串時,imageview應該不可見。

//From activity A
Intent iin= getIntent();
Bundle b = iin.getExtras();
//From Activity C
Intent i2=getIntent();
Bundle abcd=i2.getExtras();

if(b!=null)
{
    String j =(String) b.get("arrowvisi");

    Toast.makeText(getApplicationContext(), j, Toast.LENGTH_LONG).show();
    if(j==b.get("arrowvisi"))
    {
        img_back.setVisibility(View.VISIBLE);
        Toast.makeText(getApplicationContext(), "Operational arrow visible", Toast.LENGTH_LONG).show();

    }
    else
    {
        if(abcd!=null)
        {
            String jst =(String) abcd.get("arrow_val");
            if(jst==abcd.get("arrow_val"))
            {
                img_back.setVisibility(View.GONE);
                Toast.makeText(getApplicationContext(), "scan dispatch visble", Toast.LENGTH_LONG).show();
            }
            else
            {
                //img_back.setVisibility(View.GONE);

                System.out.println("from scan dispatch");
                Toast.makeText(getApplicationContext(), "scan dispatch not visible", Toast.LENGTH_LONG).show();
            }

        }


        Toast.makeText(getApplicationContext(), "Operational not visible", Toast.LENGTH_LONG).show();
    }

}

首先,要比較java中的字符串,需要使用.equals

所以改變

 if(j==b.get("arrowvisi"))

 if(j.equals(b.getString("arrowvisi")))

if(jst==abcd.get("arrow_val"))

if(jst.equals(abcd.getString("arrow_val")))

其次,您的條件將永遠為真,因為您總是在比較兩個相等的值,即首先在jst獲取值,然后再比較相同的值。

編輯:解決空指針更改

 String j =(String) b.get("arrowvisi");

 String j = b.getString("arrowvisi");

 String jst =(String) abcd.get("arrow_val");

 String jst =abcd.getString("arrow_val");

並發布logcat異常。

更換

String j = (String) b.get("arrowvisi");

String j = b.getString("arrowvisi");

String jst = (String) abcd.get("arrow_val");

String jst = abcd.getString("arrow_val");

還字符串比較應該像

j.equals(b.getString("arrowvisi")) // change again

jst.equals(abcd.getString("arrow_val"))  // change again 

因此,最終的答案應該類似於

//From activity A
Intent iin = getIntent();
Bundle b = iin.getExtras();

//From Activity C
Intent i2 = getIntent();
Bundle abcd = i2.getExtras();

if(b != null){
    String j = "String to check"; // Replace content inside "" with your string 
    Toast.makeText(getApplicationContext(), j, Toast.LENGTH_LONG).show();
    if(j.equals(b.getString("arrowvisi"))){
        img_back.setVisibility(View.VISIBLE);
        Toast.makeText(getApplicationContext(), "Operational arrow visible", Toast.LENGTH_LONG).show();
    }else{
        if(abcd != null){
            String jst = "String to check"; // Replace with string you want to check
            if(jst.equals(abcd.getString("arrow_val"))){
                img_back.setVisibility(View.GONE);
                    Toast.makeText(getApplicationContext(), "scan dispatch visble", Toast.LENGTH_LONG).show();
                }else{
                    //img_back.setVisibility(View.GONE);
                    System.out.println("from scan dispatch");
                    Toast.makeText(getApplicationContext(), "scan dispatch not visible", Toast.LENGTH_LONG).show();
                }
            }
            Toast.makeText(getApplicationContext(), "Operational not visible", Toast.LENGTH_LONG).show();
        }
    }

還要注意 ,做類似的事情

String jst = abcd.getString("arrow_val"));
if(jst.equals(abcd.getString("arrow_val"))) // this will be always true

這將導致if語句始終為true。

2種選擇:

1)刪除if語句,因為它始終為true。

2)更改String jst = "Some string to compare" (對此jst = "Some string to compare"更改),現在在if循環中使用jst.equals(abcd.getString("arrow_val"))比較jstgetString("arrow_val")

改變這個

String j = (String) b.get("arrowvisi");

String j = b.getString("arrowvisi");

String jst = (String) abcd.get("arrow_val");

String jst = abcd.getString("arrow_val");

也把它放在括號中

b.get("arrowvisi")
abcd.get("arrow_val")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM