多个活动在单个布局中进行更改

时间:2015-03-21 21:49:06

标签: java android android-layout

我刚刚开始制作我的第一个Android应用程序而且我正在尝试更熟悉android开发的基本原理。因此,我的MainActivity立即爆炸了代码行。为了使我的代码更易于维护,我试图将代码片段放在不同的活动中。另外根据android的设计原则:Don't Overload a Single Activity Screen

现在我正在努力使用单一XML布局来使用不同的活动。我在这里发现了一些类似的案例:this one但我也在阅读here我应该使用片段。我看不出如何正确地解决这个问题。

我遇到的代码遇到的具体问题是,第二个活动应该使用setImageResource将imageview的背景更改为正常,但事实并非如此。

我的代码:

package com.test.scores;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends Activity implements View.OnClickListener {

    private ImageButton btn1, btn2;
    int varMinusScore;

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

        btn1 = (ImageButton) findViewById(R.id.btn1);
        btn1.setOnClickListener(this);
        btn2 = (ImageButton) findViewById(R.id.btn2);
        btn2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn1:
                varMinusScore = 1;
                startActivity(new Intent(getApplicationContext(), ResetImageResources.class));
                btn1.setImageResource(R.drawable.btn01p);
        }
        switch (v.getId()) {
            case R.id.btn2:
                varMinusScore = 2;
                startActivity(new Intent(getApplicationContext(), ResetImageResources.class));
                btn2.setImageResource(R.drawable.btn02p);
        }
    }
}

第二项活动:

package com.test.scores;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageButton;

public class ResetImageResources extends Activity {

     private ImageButton btn1, btn2;

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

        btn1 = (ImageButton) findViewById(R.id.btn1);
        btn2 = (ImageButton) findViewById(R.id.btn2);
        btn1.setImageResource(R.drawable.btn01);
        btn2.setImageResource(R.drawable.btn02);

        finish();
    }
}

2 个答案:

答案 0 :(得分:2)

活动绝对是彼此孤立的。您设置为每个活动的内容的相同XML文件并不意味着布局的相同/共享实例。你不应该考虑布局,而应考虑活动。

在您的情况下,您只需启动第二个Activity,在此处更改按钮的背景,然后返回并查看第一个Activity。第二个Activity中的任何更改都不会在其他位置镜像。就是这样。

答案 1 :(得分:0)

试试这个:

插入按钮以完成第二项活动。在按钮界面button.setOnClickListener(new OnClickListener(){} );下使用finish(),然后您会清楚地注意到背景之间的差异。只有在您单击时才可以返回主要活动。