Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多个活动在单个布局中进行更改_Java_Android_Android Layout - Fatal编程技术网

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

Java 多个活动在单个布局中进行更改,java,android,android-layout,Java,Android,Android Layout,我刚刚开始制作我的第一个安卓应用程序,我正试图更加熟悉安卓开发的基本原则。因此,我的主要活动很快就爆发出一行行代码。为了使我的代码更易于维护,我尝试将代码片段放在不同的活动中。同样根据android的设计原则: 现在,我正努力用一个XML布局来使用不同的活动。我在这里发现了一些类似的例子,比如:但是我也读到我应该使用片段。我看不出如何正确地解决这个问题 我在代码中遇到的具体问题是,第二个活动应该使用setImageResource将imageview的背景更改为正常,但事实并非如此 我的代码:

我刚刚开始制作我的第一个安卓应用程序,我正试图更加熟悉安卓开发的基本原则。因此,我的主要活动很快就爆发出一行行代码。为了使我的代码更易于维护,我尝试将代码片段放在不同的活动中。同样根据android的设计原则:

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

我在代码中遇到的具体问题是,第二个活动应该使用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();
    }
}

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

在您的情况下,您只需开始第二个活动,更改此处按钮的背景,然后返回并查看第一个活动。第二个活动中的任何更改都不会反映到其他地方。就这样。

试试这个:


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

你需要回到developer.android.com,再次阅读基本教程。现在我明白了。我也理解重新加载屏幕实际上是启动R.layout.activity_main的新实例。我以前没听说过。但是我该怎么办呢?有没有其他方法可以将我的代码分割成若干部分(并更改相同的布局),或者我应该在MainActivity中保留所有影响布局的代码?最好为一个布局文件维护一个java文件。根据您的功能要求执行此操作。