2014-09-01 193 views
1

我不確定爲什麼會發生這種情況,但是我有我的主要活動,然後使用Intent調用子活動。在這個活動中,我有一個向上的按鈕,但它只是出於某種原因退出應用程序。我一直盯着這一段時間,也許它只是需要一雙新鮮的眼睛。向上按鈕退出應用程序?

如果任何人都可以解釋爲什麼發生這種情況,我會很感激

MainActivity.java

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     CardView cardView = (CardView) findViewById(R.id.card_view); 
     cardView.setOnClickListener(new CardView.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(MainActivity.this, Orange.class); 
       startActivity(intent); 
       finish(); 
      } 
     }); 
    } 
} 

Orange.java

public class Orange extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.orange); 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
} 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       NavUtils.navigateUpFromSameTask(this); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

在我AndroidMainfest。 xml我有

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

+0

您是否有任何錯誤日誌... – geekCode 2014-09-01 22:44:00

+0

當您開始新的活動時,您正在完成活動。刪除'finish();' – 2014-09-02 04:33:51

回答

3

在您的MainActivity按鈕點擊你這樣做:

@Override 
    public void onClick(View view) { 
     Intent intent = new Intent(MainActivity.this, Orange.class); 
     startActivity(intent); 
     finish(); 
    } 

你開始橙色活動和完成MainActivity。當您從Orange退出時,無處可返,因此應用程序已關閉

+0

但是橙色活動從不會像他在他的帖子中描述的那樣顯示 – geekCode 2014-09-01 22:51:54

+0

@Alexander Zhak:我想你是對的.OP需要刪除那個'finish()'行。 – 2014-09-01 23:20:43

0

嘗試加入這個...

MainActivity.this.startActivity(intent); 
1

我不確定,但可能是因爲finish();完成後,活動會破壞活動,因此您無法返回到之前的活動。嘗試刪除完成();希望這有助於:)

0

你是否聲明你的清單中的橙色活動?

請求顯示您的整個Android清單文件。

你應該是這樣的:

<activity android:name=".Orange" 
    android:label="@string/app_name" > 
</activity> 

除了:

<activity 
    android:name=".MainActivity" 
... 

否則當您嘗試啓動橙色活動就會死機。

編輯: 重新閱讀這篇文章後,我認爲@Alexander Zhak對他的回答是正確的,該行(finish();)正在關閉第一個活動,所以沒有什麼可返回,因此它關閉了應用程序。

相關問題