我正在编写我的第二个应用并实施了第二个活动,通过单击第一个活动上的按钮激活。我已经在android清单中声明了第二个活动,希望我做得对。我一直在寻找几个小时,并尝试了几十个答案,但没有一个帮助。我希望有人能帮助我。
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.cont.bloodscript.mueckenfang">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<activity android:name=".GameActivity" />
</activity>
</application>
</manifest>
第1次活动:
public class MainActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button sB = (Button) findViewById(R.id.startButton);
sB.setOnClickListener(this);
}
public void onClick(View v){
if(v.getId()==R.id.startButton){
startActivity(new Intent(MainActivity.this, GameActivity.class));
}
}
}
第二项活动:
public class GameActivity extends Activity implements View.OnClickListener,Runnable {
public static final int HOECHSTALTER_MS = 2000;
private boolean spielLaeuft;
private int punkte;
private int runde;
private int muecken;
private int gefangeneMuecken;
private short zeit;
private float massstab;
private Random zufallsGenerator = new Random();
private ViewGroup spielBereich;
private Handler handler = new Handler();
@Override
public void run(){
zeitHerunterzaehlen();
}
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
massstab = getResources().getDisplayMetrics().density;
spielBereich =(ViewGroup) findViewById(R.id.spielbereich);
spielStarten();
}
public void onClick(View muecke){
gefangeneMuecken++;
punkte+=100;
bildschirmAktualisieren();
spielBereich.removeView(muecke);
}
public void spielStarten() {
spielLaeuft = true;
runde = 0;
punkte = 0;
starteRunde();
}
private void starteRunde() {
runde+=1;
muecken=runde*10;
gefangeneMuecken=0;
zeit=60;
bildschirmAktualisieren();
handler.postDelayed(this,1000);
}
private void bildschirmAktualisieren() {
TextView tvPunkte = (TextView) findViewById(R.id.points);
tvPunkte.setText(Integer.toString(punkte));
TextView tvRunde = (TextView) findViewById(R.id.rounds);
tvRunde.setText(Integer.toString(runde));
FrameLayout flTreffer = (FrameLayout) findViewById(R.id.hitbar);
FrameLayout flZeit = (FrameLayout) findViewById(R.id.timebar);
ViewGroup.LayoutParams lpTreffer = flTreffer.getLayoutParams();
lpTreffer.width = Math.round(massstab*300*Math.min(gefangeneMuecken,muecken)/muecken);
ViewGroup.LayoutParams lpZeit = flZeit.getLayoutParams();
lpZeit.width = Math.round(massstab*zeit*300/60);
}
private void zeitHerunterzaehlen(){
zeit-=1;
float zufallsZahl=zufallsGenerator.nextFloat();
double wahrscheinlichkeit=muecken*1.5;
if(wahrscheinlichkeit>1){
eineMueckeAnzeigen();
if(zufallsZahl<wahrscheinlichkeit-1){
eineMueckeAnzeigen();
}
}else{
if(zufallsZahl<wahrscheinlichkeit){
eineMueckeAnzeigen();
}
}
mueckenVerschwinden();
bildschirmAktualisieren();
if(!pruefeSpielEnde()){
if(!pruefeRundenEnde()){
handler.postDelayed(this,1000);
}
}
}
private boolean pruefeSpielEnde(){
if(zeit==0&&gefangeneMuecken<muecken){
gameOver();
return true;
}
return false;
}
private boolean pruefeRundenEnde(){
if(gefangeneMuecken>=muecken){
starteRunde();
return true;
}
return false;
}
private void eineMueckeAnzeigen(){
int breite = spielBereich.getWidth();
int hoehe = spielBereich.getHeight();
int mueckeBreite = (int) Math.round(massstab*50);
int mueckeHoehe = (int) Math.round(massstab*50);
int oben = zufallsGenerator.nextInt(hoehe-mueckeHoehe);
int links = zufallsGenerator.nextInt(breite-mueckeBreite);
ImageView muecke = new ImageView(this);
muecke.setImageResource(R.drawable.diptera);
muecke.setOnClickListener(this);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(mueckeBreite,mueckeHoehe);
params.leftMargin = links;
params.topMargin = oben;
params.gravity = Gravity.TOP + Gravity.LEFT;
spielBereich.addView(muecke,params);
muecke.setTag(R.id.geburtsdatum, new Date());
}
private void mueckenVerschwinden(){
int nummer = 0;
while(nummer<spielBereich.getChildCount()){
ImageView muecke = (ImageView) spielBereich.getChildAt(nummer);
Date geburtsdatum = (Date) muecke.getTag(R.id.geburtsdatum);
long alter = (new Date().getTime()-geburtsdatum.getTime());
if(alter> HOECHSTALTER_MS){
spielBereich.removeView(muecke);
}else{
nummer++;
}
}
}
private void gameOver(){
Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.gameover);
dialog.show();
spielLaeuft = false;
}
}
答案 0 :(得分:8)
清单文件中的嵌套错误。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.cont.bloodscript.mueckenfang">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GameActivity" />
</application>
</manifest>