问题描述
该课程扩展了我的主要活动。
public class Numbers extends MainActivity{
public ArrayList<ImageView> getNumbers () {
ArrayList<ImageView> numbers = new ArrayList<>();
ImageView one = (ImageView) findViewById(R.id.one);
numbers.add(one);
return numbers;
}
而且我做了一些挖掘,但是可以弄清楚为什么我的变量“ one”返回null。
我的MainActivity有一个ContentView集。
这是我在MainActivity中的onCreate
的内容
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView start = (ImageView) findViewById(R.id.start);
sceneRoot = (ViewGroup) findViewById(R.id.scene_root);
questionView = findViewById(R.id.questionView);
startView = findViewById(R.id.startView);
gameOverView = findViewById(R.id.gameOver);
animSlide = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide);
animSlide.setAnimationListener(this);
animZoom = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.zoom_fade);
animZoom.setAnimationListener(this);
set.addTransition(new Fade())
.addTransition(new Slide(Gravity.RIGHT));
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getQuestion();
TransitionManager.beginDelayedTransition(sceneRoot, set);
startView.setVisibility(View.GONE);
questionView.setVisibility(View.VISIBLE);
}
});
}
public void getQuestion (){
time = (TextView) findViewById(R.id.timeBar);
time.startAnimation(animSlide);
}
在单击开始并开始动画之后,我才调用getNumbers()
。
public void onAnimationStart(Animation animation){
if(animation == animSlide) {
final Questions questions = new Questions();
Numbers n = new Numbers();
for (int i = 0; i < n.getNumbers().size(); i++) {
n.getNumbers().get(i).setVisibility(View.GONE);
n.getNumbersTen().get(i).setVisibility(View.GONE);
}
n.getNumbers().get(0).setVisibility(View.VISIBLE);
编辑:
如果有人想知道,我可以通过将类扩展为Fragment而不是MainActivity来使其工作。 然后,我只在xml中使用了该片段。
1楼
因为扩展了Activity类并不意味着setContentView
被该类调用。
只有正确启动它,并且您从Numbers
自己的onCreate
实施调用super.onCreate(bundle)
,它才会这样做
基本上,您绝不应该new
任何活动。
它没有生命周期,因此也没有内容视图,因此findViewById
不能正常工作。
Numbers n = new Numbers();
您无法扩展任何内容,并且在图像列表周围只有一个数据类。
public class Numbers {
private List<ImageView> numbers = new ArrayList<ImageView>();
public Numbers() {}
public void addNumber(ImageView v) { numbers.add(v); }
public List<ImageView> getNumbers() { return numbers; }
}
从MainActivity,您可以找到并根据需要添加。
Number n = new Numbers();
n.addNumber((ImageView) findViewById(R.id.one));
但是,我不知道这是否有用,真的...
如果您想要“活动”的“子视图”,也许Fragment可以达到更好的目的,但这很难说。