Android 重定向到其他活动
我试图通过我的选项菜单重定向到另一个活动,但是,当选中该项目时,它会崩溃。有人能看到错误吗 这里是GameCentral.javaAndroid 重定向到其他活动,android,redirect,android-activity,menu,options,Android,Redirect,Android Activity,Menu,Options,我试图通过我的选项菜单重定向到另一个活动,但是,当选中该项目时,它会崩溃。有人能看到错误吗 这里是GameCentral.java public class GameCentral extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gamecentr
public class GameCentral extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gamecentral);
}
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.gamecentralmenu, menu);
return true;
}
public boolean onOptionsItemSelected (MenuItem item)
{
switch(item.getItemId()){
case R.id.GuessingGame:
Intent intent = new Intent(GameCentral.this, MainActivity.class);
startActivity(intent);
case R.id.Example1:
Toast.makeText(this, "Example 1", Toast.LENGTH_SHORT);
case R.id.Example2:
Toast.makeText(this, "Example 2", Toast.LENGTH_SHORT);
case R.id.Example3:
Toast.makeText(this, "Example 3", Toast.LENGTH_SHORT);
}
return true;
}
}
下面是日志:
03-11 17:46:50.353: E/AndroidRuntime(1522): FATAL EXCEPTION: main
03-11 17:46:50.353: E/AndroidRuntime(1522): Process: com.example.c3438525Task3, PID: 1522
03-11 17:46:50.353: E/AndroidRuntime(1522): android.util.SuperNotCalledException: Activity {com.example.c3438525Task3/com.example.c3438525Task3.GameCentral} did not call through to super.onCreate()
下面是MainActivity.java
public class MainActivity extends Activity {
int i;
int min;
int max;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
min = 1;
max = 20;
Random r = new Random();
i = r.nextInt(max - min + 1) + min;
}
public void guessingGame (View v)
{
EditText guess = (EditText) findViewById(R.id.guess);
TextView finalMessage = (TextView) findViewById(R.id.finalMessage);
TextView numGuessesLeft = (TextView) findViewById(R.id.guessesLeft);
TextView compGuess = (TextView) findViewById(R.id.tvCompGuess);
TextView restartCounter = (TextView) findViewById(R.id.restartCount);
TextView guessCorrect = (TextView) findViewById(R.id.guessesCorrect);
TextView yourGuess = (TextView) findViewById(R.id.userGuess);
Button start = (Button) findViewById(R.id.start);
compGuess.setVisibility(View.INVISIBLE);
int guessesCorrect = Integer.parseInt(guessCorrect.getText().toString());
int guessValue = Integer.parseInt(guess.getText().toString());
start.setText("Start");
int numGuessesValue = Integer.parseInt(numGuessesLeft.getText().toString());
int restartCount = Integer.parseInt(restartCounter.getText().toString());
if (guessValue > 20)
{
finalMessage.setText("Error");
guess.getText().clear();
}
else if (guessValue < 1)
{
finalMessage.setText("Error");
guess.getText().clear();
}
else
{
numGuessesValue -= 1;
numGuessesLeft.setText(Integer.toString(numGuessesValue));
if (numGuessesValue > 0)
{
int computerNumber = i;
compGuess.setText(Integer.toString(i));
yourGuess.setText(Integer.toString(guessValue));
if (computerNumber > guessValue)
{
finalMessage.setText("Too low!");
finalMessage.setTextColor(Color.BLUE);
}
else if (computerNumber < guessValue)
{
finalMessage.setText("Too high!");
finalMessage.setTextColor(Color.RED);
}
else if (computerNumber == guessValue)
{
compGuess.setVisibility(View.VISIBLE);
finalMessage.setText("Good Guess!");
numGuessesValue += 5;
numGuessesLeft.setText("5");
finalMessage.setTextColor(Color.GREEN);
guessesCorrect += 1;
guessCorrect.setText(Integer.toString(guessesCorrect));
Random r = new Random();
i = r.nextInt(max - min + 1) + min;
}
}
else if (numGuessesValue == 0)
{
guess.setText("10");
start.setText("Restart");
finalMessage.setText("You are out of guesses! - Enter a new number to start again");
compGuess.setVisibility(View.VISIBLE);
numGuessesValue += 5;
numGuessesLeft.setText("5");
restartCount += 1;
restartCounter.setText(Integer.toString(restartCount));
guess.getText().clear();
Random r = new Random();
i = r.nextInt(max - min + 1) + min;
}
}
}
}
公共类MainActivity扩展活动{
int i;
int-min;
int max;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最小值=1;
最大值=20;
随机r=新随机();
i=r.nextInt(最大-最小+1)+min;
}
公众猜空游戏(视图五)
{
EditText guess=(EditText)findViewById(R.id.guess);
TextView finalMessage=(TextView)findViewById(R.id.finalMessage);
TextView numguessleft=(TextView)findViewById(R.id.guessleft);
TextView compGuess=(TextView)findViewById(R.id.tvCompGuess);
TextView restartCounter=(TextView)findViewById(R.id.restartCount);
TextView guessCorrect=(TextView)findViewById(R.id.guessCorrect);
TextView yourGuess=(TextView)findViewById(R.id.userGuess);
按钮开始=(按钮)findViewById(R.id.start);
compGuess.setVisibility(视图不可见);
int guessCorrect=Integer.parseInt(guessCorrect.getText().toString());
int guessValue=Integer.parseInt(guess.getText().toString());
start.setText(“开始”);
int numguesesvalue=Integer.parseInt(numguesesleft.getText().toString());
int restarcount=Integer.parseInt(restarcounter.getText().toString());
如果(猜测值>20)
{
finalMessage.setText(“错误”);
guess.getText().clear();
}
else if(猜测值<1)
{
finalMessage.setText(“错误”);
guess.getText().clear();
}
其他的
{
numguesesvalue-=1;
numguesesleft.setText(Integer.toString(numguesesvalue));
如果(numguesesvalue>0)
{
int computerNumber=i;
compGuess.setText(Integer.toString(i));
yourgess.setText(Integer.toString(guessValue));
如果(计算机编号>猜测值)
{
setText(“太低了!”);
最终消息。setTextColor(Color.BLUE);
}
else if(计算机编号<猜测值)
{
setText(“太高了!”);
最终消息。setTextColor(Color.RED);
}
else if(computerNumber==猜测值)
{
compGuess.setVisibility(View.VISIBLE);
setText(“猜对了!”);
数值+=5;
Numguesselft.setText(“5”);
最终消息。setTextColor(Color.GREEN);
猜测正确率+=1;
guessCorrect.setText(Integer.toString(guessCorrect));
随机r=新随机();
i=r.nextInt(最大-最小+1)+min;
}
}
else if(numguesesvalue==0)
{
猜一猜。setText(“10”);
start.setText(“重启”);
setText(“你猜不到了!-输入一个新数字重新开始”);
compGuess.setVisibility(View.VISIBLE);
数值+=5;
Numguesselft.setText(“5”);
restarcount+=1;
restarcounter.setText(Integer.toString(restarcount));
guess.getText().clear();
随机r=新随机();
i=r.nextInt(最大-最小+1)+min;
}
}
}
}
检查Logcat的最后一行,似乎您没有在MainActivity.java
的onCreate()
方法中调用super.onCreate()。
并确保将MainActivity添加到清单中,如下所示:
<application . . .>
<activity android:name="com.example.c3438525Task3.MainActivity" />
</application>
要重定向另一个活动只需将一个类名创建为(常规类),然后将下面的代码粘贴到活动中
不仅仅是写
->类名(常规).重定向活动(活动名称)
您好,谢谢您的快速回复,但我有super.onCreate(savedInstanceState);在onCreate方法的两个类上!你能发布MainActivity.java的代码吗?添加到上面,谢谢你显示你的MainActivity代码。我编辑了代码,我得到一个错误声明:03-11 18:10:28.803:E/AndroidRuntime(1915):android.content.ActivityNotFoundException:找不到显式活动类{com.example.c3438555task3/com.example.c343855task3.MainActivity};您是否在AndroidManifest.xml中声明了此活动?您需要在清单中的应用程序标记下添加此活动
private fun redirectActivity(activity: Activity) {
Handler().postDelayed({
startActivity(Intent(this, activity::class.java))
}, 500)
}