2012-12-04 58 views
0

在我的應用程序中,我有一個圖標隱藏的標頭,當我點擊listview時我有一個帶有listview的適配器我使用listener進入登錄屏幕,當登錄成功時應該回到列表視圖(適配器)和圖標應該在標題上可見。我發送的意圖如下:http://pastebin.com/4SKnyjVXAndroid:使用StartActivityFor結果

下面

是的onclick登錄按鈕

public void onClick(View v) { 

    String password = etPassword.getText().toString(); 

    if(password.equals("guest")){ 
     Intent returnIntent = new Intent(); 
     returnIntent.putExtra("result",result); 
     setResult(1,returnIntent);  
     finish(); 
    } else { 
     //---- 
    } 

    finish();     
} 

如何使用onActivityResult設置標誌,並在點擊監聽器使用該標誌, ,還可以使用它來使圖標可見。任何建議表示讚賞

+0

當你說頭,你的意思是連接到使用'setHeaderView()'ListView的一個看法?或者它是獨立的ViewGroup,比如放置在Activity的頂部的LinearLayout? – Ole

+0

@ Ole是啊它是一個獨立的ViewGroup在所有屏幕通用的活動頂部 – teekib

+0

然後檢查出答案Enigma張貼;) – Ole

回答

1

在你前面,你必須在頭隱藏的圖標列表視圖的活動,覆蓋函數onActivityResult()這樣的事情 -

protected void onActivityResult (int requestCode, int resultCode, Intent data) { 
    boolean success = data.getBooleanExtra("result", false); 
    if(success) { 
     hiddenIcon.setVisibility(View.VISIBLE); 
    } 
    else { 
     showDialog("Error"); 
    } 
} 

我改變了你的onClick這種方式

public void onClick(View v) { 

     String password = etPassword.getText().toString(); 
     Intent returnIntent = new Intent(); 
     if(password.equals("guest")){ 
      returnIntent.putExtra("result", true); 
      setResult(RESULT_OK, returnIntent);  
     } 
     else { 
      returnIntent.putExtra("result", false); 
      setResult(RESULT_OK, returnIntent); 
     } 

     finish();     
    } 
+0

iam從一個監聽器調用這個登錄屏幕,所以我需要將這個onactivityresult()放在監聽器中或適配器? – teekib

+0

http://pastebin.com/Ckft1y9W ?? – teekib

+0

onActivityResult應該在您的活動 – Enigma

0
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==RESULT_OK){ 
     Bundle basket=data.getExtras(); 
     String s=basket.getString("result"); 
     //Your Code Here 
    } 
} 

這將有助於

2

你h AVE覆蓋​​:

  • requestCode是你最初是作爲第二個參數傳遞startActivityForResult()整數。您應該檢查這與您的原始請求相匹配,以防您有多個請求需要區分。
  • resultCoderesultIntent是您在上面的代碼中傳遞給setResult()的整數和意圖。

那麼你的方法應該是這個樣子:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent resultIntent) { 
    if (requestCode == 1) { // original request 
     if (resultCode == 1) { // success 
      String result = resultIntent.getStringExtra("result"); 
      // Login successful, update your model and call adapter.notifyDataSetChanged() or something 
     } 
    } 
}