我知道这个问题在此之前已被多次询问,但我已经尝试了之前发布的所有解决方案,但没有一个对我有用。我有一个非常简单的启动页面,我想在onSplashPageClick上转到一个新的活动。在模拟器中,它会变成黑屏并无限期地卡住。我已经检查了我想要在android清单文件中找到的活动(ColorMatch.class)以及在onCreate下有setContentView。
我的Android清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ali.colormatch">
<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=".ColorMatch"></activity>
</application>
</manifest>
我的MainActivity.java:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_page);
}
public void onSplashPageClick(View view){
Intent intent = new Intent(this, ColorMatch.class);
/* intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
overridePendingTransition(0, 0); */
startActivity(intent);
}
public void onQuitClick(View view){
finish();
}
}
我想在启动页面ColorMatch.java之后启动的活动:
package com.example.ali.colormatch;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.os.Bundle;
import android.app.Activity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.Random;
public class ColorMatch extends AppCompatActivity {
int answer; //1 = red, 2 = blue, 3 = green, 4 = yellow
TextView textView3, textView2;
int count = 0;
volatile boolean playing = true;
private long timeThisFrame;
private Button testButton;
long fps;
int score;
int correctAnswer;
boolean matchColor = true, matchText = false;
long startFrameTime;
boolean firstTime = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_color_match);
textView3 = (TextView) findViewById(R.id.textView3);
textView2 = (TextView) findViewById(R.id.textView2);
/*testButton = (Button) findViewById(R.id.button);
testButton.setOnClickListener(new View.OnTouchListener(){
public void onClick(View v) {
answer = 3;
}
});*/
//run();
}
public void run() {
while (playing) {
startFrameTime = System.currentTimeMillis();
if (firstTime){
generateNewWord();
firstTime = false;
}
if (answer == correctAnswer){
score++;
count++;
generateNewWord();}
else {
quit();
}
if (count % 5 == 0){
if (matchColor) {
textView3.setText(getString(R.string.gameSetting2)); // might need to add context with this - check http://stackoverflow.com/questions/10698945/reference-string-resource-from-code
matchColor = true;
matchText = false;
}
else if (matchText){
textView3.setText(getString(R.string.gameSetting1));
matchText = true;
matchColor = false;
}
}
}
//draw();
timeThisFrame = System.currentTimeMillis() - startFrameTime;
if (timeThisFrame > 0) {
fps = 1000 / timeThisFrame;
}
}
public void generateNewWord(){
//randomly select between red, green, blue, yellow
Random rand = new Random();
int randomInt1 = rand.nextInt(4) + 1; // assigns randomInt a value between 1 - 4
int randomInt2 = rand.nextInt(4) + 1;
if (randomInt1 ==1){
textView3.setText(R.string.Red);
}
else if (randomInt1 ==2){
textView3.setText(R.string.Green);
}
else if (randomInt1 == 3){
textView3.setText(R.string.Blue);
}
else if (randomInt1 == 4){
textView3.setText(R.string.Yellow);
}
//randomly select hex codes between rgby
if (randomInt2 ==1){
textView3.setTextColor(0xffcc0000);
}
else if (randomInt2 ==2){
textView3.setTextColor(0xff669900);
}
else if (randomInt2 == 3){
textView3.setTextColor(0xff000080);
}
else if (randomInt2 == 4){
textView3.setTextColor(0xffffff00);
}
if (matchColor) {
correctAnswer = randomInt2;
}
else if(matchText){
correctAnswer = randomInt1;
}
}
public void quit(){
}
public void sendBlue(View view){
answer = 2;
}
public void sendRed(View view){
answer = 1;
}
public void sendYellow(View view){
answer = 4;
}
public void sendGreen(View view){
answer = 3;
}
}
我的启动页面xml文件,使用MainActivity打开:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="center"
android:background="#d0cbd1"
tools:context="com.example.ali.colormatch.MainActivity"
android:weightSum="1"
android:onClick="onSplashPageClick"
android:baselineAligned="false">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-thin"
android:text="Color Match"
android:gravity="center"
android:textColor="#440027"
android:textSize="75dp"
android:id="@+id/textView" />
</LinearLayout>
ColorMatch.java的XML文件 - activity_color_match.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_color_match"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.ali.colormatch.ColorMatch">
<TextView
android:text="@string/matchText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView3"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:text="@string/mainColor"
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="@android:color/background_dark"
android:textSize="100dp"
android:layout_marginBottom="104dp"
android:textAppearance="@style/TextAppearance.AppCompat.Display3"
android:layout_above="@+id/button3"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="150dp"
android:layout_height="60dp"
android:id="@+id/button"
android:background="#000080"
android:onClick="sendBlue"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_height="60dp"
android:id="@+id/button2"
android:background="@color/yellow"
android:elevation="0dp"
android:layout_width="150dp"
android:onClick="sendYellow"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="150dp"
android:layout_height="60dp"
android:id="@+id/button3"
android:background="@android:color/holo_red_dark"
android:onClick="sendRed"
android:layout_above="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="19dp" />
<Button
android:layout_width="150dp"
android:layout_height="60dp"
android:id="@+id/button4"
android:background="@android:color/holo_green_dark"
android:onClick="sendGreen"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignBottom="@+id/button3" />
</RelativeLayout>
答案 0 :(得分:0)
试试这个:
public void onSplashPageClick(View view){
Intent intent = new Intent(MainActivity.this, ColorMatch.class);
startActivity(intent);
}
评论run();在ColorMatch类
中如果它正在工作,则开始调试run()程序。