现在,我有了扩展Activity类的MainActivity.java。
package com.divergent.tapdown1;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View PlayScreen = new PlayScreen(this);
setContentView(PlayScreen);
PlayScreen.setBackgroundColor(Color.BLACK);
}
}
这将打开扩展了View的PlayScreen。
我希望能够在发生特定事件时打开从PlayScreen创建的新LoseScreen。问题在于setContentView()显然是Activity类的一部分。我该如何解决?
谢谢!
编辑:
if (playerBounds.bottom > rowBlock.top && playerBounds.top < rowBlock.bottom && (playerBounds.left < blockX1[row] || playerBounds.right > blockX2[row])) {
ViewGroup parent = (ViewGroup) getParent();
finalScore = score;
parent.addView(new PauseScreen(getContext()));
parent.bringToFront();
parent.setBackgroundResource(R.drawable.pausebackground);
}
最佳答案
您可以采取几种方法:
您可以创建一个容器视图(例如FrameLayout
),将其用作根视图,然后将LoseScreen添加到其中,然后从其中删除PlayScreen。然后,如果需要其他一些代码来添加/删除视图,则可以将引用传递给容器。
View playScreen = new PlayScreen(this);
View container = new FrameLayout(this);
playScreen.setRootView(container);
container.addView(playScreen);
setContentView(container);
您可以将对
MainActivity
的引用传递给创建LoseScreen的类。由于setContentView
是公共方法,因此您可以在其上调用setContentView
,例如:Activity mainActivity = this;
playScreen.setMainActivity(mainActivity);
然后从
PlayScreen
内:mainActivity.setContentView(new LoseScreen(getContext()));
在
PlayScreen
中,您可以使用getParent()
获取父视图,然后类似于第一种方法,将LoseScreen添加到其中,然后删除PlayScreen。ViewGroup parent = (ViewGroup)getParent();
parent.addView(new LoseScreen(getContext()));
parent.removeView(this);