向上按钮退出应用程序?

时间:2014-09-01 22:40:09

标签: java android xml

我不确定为什么会这样,但是我有我的Main活动,然后使用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>

4 个答案:

答案 0 :(得分:3)

在MainActivity on按钮上单击,执行以下操作:

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

您启动Orange活动并完成MainActivity。当您从Orange退出时,无处可返回,因此应用程序已关闭

答案 1 :(得分:1)

我不确定但可能是因为结束(); 因为完成后会在进入另一个活动后销毁活动,所以您无法返回上一个活动。尝试删除finish();希望这会有所帮助:)

答案 2 :(得分:0)

尝试添加此内容...

MainActivity.this.startActivity(intent);

答案 3 :(得分:0)

您是否在清单中声明橙色活动?

请求显示您的整个Android清单文件。

你应该有类似的东西:

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

除了:

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

否则当您尝试启动橙色活动时它会崩溃。

编辑: 在重新阅读这篇文章后,我认为@Alexander Zhak对他的回答是正确的,该行(finish();)正在关闭第一个活动,所以没有任何东西可以返回,所以它关闭了应用程序。