2016-07-29 78 views
-1

我有兩個活動活動A和活動B,並且我使用意圖將該活動A的值傳遞給活動B.一切都很好。當我打開我的Act-B時,我從Act-A獲得價值,現在問題是當點擊後退按鈕(兩次),然後只有我得到我的Act-A。當我按一次相同的活動時,它沒有導航我在我的 Act-A。爲什麼我的後退按鈕無法正常工作

法-A:

btn_add_city.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View view) { 
         // Launching Add_City Screen 
         Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 
passmyValue(); 

        } 
       }); 

     public void passmyValue(){ 

       intent = new Intent(getApplicationContext(),Act-B.class); 
       intent.putExtra("name", receive.getText().toString()); 
       startActivity(intent); 
      } 

法-B:

receive = (TextView)findViewById(R.id.userHidden); 
receive.setText(getIntent().getStringExtra("name")); 
+2

這怎麼可能?你重寫'onBackPressed'嗎?是否還有其他的東西(例如鍵盤)在第一次按下後關閉,然後是第二次按下? – Vucko

+0

嘗試覆蓋(僅限超級)onBackPressed和brakepoint以查看該方法是否被調用。 –

+0

問題是,在我的Activity-A包含Button時,當我按下該按鈕時,它將打開Activity-B。在相同的頁面我有意向 – AndroidBoy

回答

0

你只是新的兩個意圖,並開始兩個活動,這是活動乙和活動乙。實際上你在任務堆棧中有三項活動,分別是Act-A,Act-B,Act-B。

不需要兩次啓動相同的活動。嘗試下面的代碼,我認爲它有幫助。

btn_add_city.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     // Launching Add_City Screen 
     // It's no need to start the same activity for twice 
     passmyValue(); 
    } 
}); 

public void passmyValue(){ 
    intent = new Intent(getApplicationContext(),Act-B.class); 
    intent.putExtra("name", receive.getText().toString()); 
    startActivity(intent); 
} 
1

您的問題是在這個代碼片段:

// Launching Add_City Screen 
Intent i = new Intent(getApplicationContext(), Acti-B.class); 
startActivity(i); 
passmyValue(); 

您開始活動-B兩個時間,第一次在passmyValue()內沒有任何額外的和第二次。

作爲您的Activit-B,我認爲使用默認啓動模式,那麼您有兩個Activity-B實例。所以你的後退堆棧看起來像:Activity-A - > Activity-B - > Activity-B。因此,您需要按兩次以返回到活動-A。

只是刪除這些行:

Intent i = new Intent(getApplicationContext(), Acti-B.class); 
startActivity(i); 
1

在這段代碼:

@Override 
        public void onClick(View view) { 
         // Launching Add_City Screen 
         Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 
passmyValue(); 

        } 

刪除第一個目的,因爲你開始的活動兩次。這反過來意味着您的活動B在沒有額外意圖的情況下啓動一次,並且在此之上。按回來關閉第一個,並再次關閉第二個實例。只需刪除該行並啓動B活性這樣的:

@Override 
    public void onClick(View view) { 
    passmyValue(); 
} 
1

在的onClick(),則通過

Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 

起始活性-B和要在PassMyValue方法再次調用startActivity(intent)其中意圖是相同。所以你開始了2次Activity-B。 您需要通過刪除來修復它

Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i);