2015-10-27 54 views
2

我想關閉活動從菜單選項。當menuItem menu_close_activity被選中時(並且在調試時),我注意到調試器總是從返回真步驟跳轉到默認步驟。 我試圖用ActivityClassName.this.finish(),但我仍然得到同樣的結果無法完成從Android onOptionsItemSelected活動

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.menu_xxxx: 
       break; 
      case R.id.menu_yyyy: 
       break; 
      case R.id.close_activiy: 
       // doing some stuff here; 
       setResult(0001); 
       finish(); // Debugger jumps from here 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); // Debugger jumps to here. 
     } 
    } 

爲什麼我跳違約,並不會返回true?


除了這個方法我public boolean onCreateOptionsMenu(Menu menu)做什麼,但膨脹的選項菜單,protected void onCreate(Bundle savedInstanceState)

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_name_list); 
     Bundle b = getIntent().getExtras(); 
     name = b.getString("name"); 
     setTitle("Students of " + name); 
    } 
+0

編譯器或調試器? – Blackbelt

+0

你可以發佈你的全班?可能是它在return語句中的一個問題。嘗試休息。 –

+0

爲什麼'R.id.menu_log_out'不在開關櫃情況下? 什麼是'R.id.close_activiy'?這是一個菜單項嗎? – Amir

回答

0

我不明白你爲什麼活動沒有完成的原因。這應該。您可以添加一些日誌到onDestroy()方法,並看到它被調用。至於爲什麼Debugger是跳轉,那麼在這種情況下不要相信調試器。我認爲這是因爲在不同的線程中發生不同的事情而跳躍。請添加一些日誌來查看實際發生的情況。將您的代碼替換爲以下內容並檢查日誌。

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.menu_xxxx: 
      break; 
     case R.id.menu_yyyy: 
      break; 
     case R.id.close_activiy: 
      // doing some stuff here; 
      Log.d("DEBUG","BEFORE FINISH = "+item.toString()); 
      setResult(1); 
      finish(); // Compiler jumps from here 
      Log.d("DEBUG","AFTER FINISH = "+item.toString()); 
      return true; 
     default: 
      Log.d("DEBUG","DEFAULT STATEMENT = "+item.toString()); 
      return super.onOptionsItemSelected(item); // Compiler jumps to here. 
    } 
} 
+0

10-27 21:37: 19.259 2066-2066/com.example.mohgeis.driveschoolapp I/DEBUG:結束前=關閉 10-27 21:37:19.273 2066-2066/com.example.mohgeis.driveschoolapp I/DEBUG:結束後=關閉 10 -27 21:37:19.498 2066-2097/com.example.mohgeis.driveschoolapp W/EGL_emulation:eglSurfaceAttrib未實現 10-27 21:37:19.499 2066-2097/com.example.mohgeis.driveschoolapp W/OpenGLRenderer:Failed在曲面0xad75ffa0上設置EGL_SWAP_BEHAVIOR,錯誤= EGL_SUCCESS 10-27 21:37:19.721 2066-2097/com.example.mohgeis.driveschoolapp E/Surface:getSlotFromBufferLocked:unknown buffer:0xab7d6130 – Geis

+0

確實沒有默認語句不是trig當我運行應用程序並使用日誌時,但在上述圖層活動中返回的resultCode爲0而不是1 – Geis

+0

活動正在關閉。 我發現奇怪的是,調試誤導了我,並帶走了我錯誤的方式, 非常感謝。 – Geis