我刚刚开始制作我的第一个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();
}
}
答案 0 :(得分:2)
活动绝对是彼此孤立的。您设置为每个活动的内容的相同XML文件并不意味着布局的相同/共享实例。你不应该考虑布局,而应考虑活动。
在您的情况下,您只需启动第二个Activity,在此处更改按钮的背景,然后返回并查看第一个Activity。第二个Activity中的任何更改都不会在其他位置镜像。就是这样。
答案 1 :(得分:0)
试试这个:
插入按钮以完成第二项活动。在按钮界面button.setOnClickListener(new OnClickListener(){} );
下使用finish(),然后您会清楚地注意到背景之间的差异。只有在您单击时才可以返回主要活动。