此课程扩展了我的主要活动。
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;
}
我已经做了一些挖掘,但可以弄清楚为什么我的变量&#34;一个&#34;回来了 我的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);
编辑:
如果有人想知道,我通过将类扩展为片段而不是我的MainActivity来实现它。然后我在我的xml中使用了片段。
答案 0 :(得分:1)
因为你扩展了一个Activity类并不意味着setContentView
也会被调用。只有在正确启动后才能执行此操作,并在super.onCreate(bundle)
onCreate
实施中调用Numbers
基本上,您应该从不 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));
但是,我不知道这是否有用,真的......
如果你想要一个&#34;子视图&#34;也许一个片段会有更好的用途。你的活动,但很难说。