2016-12-30 2 views
0

Я делаю простой «Угадай, как это сделать». Приложение генерирует случайное число, когда оно начинается, в методе onCreate(). И при нажатии кнопки мыши я написал код, чтобы пользователь вводил число, и если номер правильный, программа должна снова создать случайное число.Можем ли мы вызвать метод OnCreate() из другой функции

Но когда я пытаюсь вызвать метод onCreate() снова из метода onClick моей кнопки, я получаю системный сбой. Можете ли вы помочь мне узнать, как вызвать этот метод onCreate из функции? Я отправляю свой код ниже.

package com.amit.higherolower; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

import java.util.Random; 

public class MainActivity extends AppCompatActivity { 
    int randomNumber; 
    public void guessGame(View view){ 
     String message = ""; 
     EditText userNumber = (EditText) findViewById(R.id.numberEditBox); 
     String userNumberText = userNumber.getText().toString(); 
     int userNumberInt = Integer.parseInt(userNumberText); 
     System.out.println(randomNumber); 

     if(userNumberInt < randomNumber){ 
      message = "You've Guessed Lower"; 
      ((EditText) findViewById(R.id.numberEditBox)).setText(""); 
     } 
     else if (userNumberInt > randomNumber){ 
      message = "You've Guessed Higher"; 
      ((EditText) findViewById(R.id.numberEditBox)).setText(""); 
     } 
     else{ 
      message = "You're Right Dude, Now let's guess the new number again."; 
      onCreate(new Bundle()); 
     } 
     Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Random randomGenerator = new Random(); 
     randomNumber = randomGenerator.nextInt(9); 
    } 
} 
+3

просто создать еще один метод и положить 'Random randomGenerator = новый Random();' и 'randomNumber = randomGenerator.nextInt (9), 'в нем. И назовите этот метод. – Umarov

+0

@ Умаров сообщение, что в качестве ответа, я также думаю, что это лучшее решение – koceeng

ответ

0

https://stackoverflow.com/a/7150118/5353361 имеет правильную идею, реорганизовать из onClose. В частности, как говорит Умаров, возьмите две линии некондиционной плитки в другую функцию и вместо этого назовите это.

Также я пытался что-то вроде:

public static void triggerRebirth(Context context, Intent nextIntent) { 
    Intent intent = new Intent(context, YourClass.class); 
    intent.addFlags(FLAG_ACTIVITY_NEW_TASK); 
    intent.putExtra(KEY_RESTART_INTENT, nextIntent); 
    context.startActivity(intent); 
    if (context instanceof Activity) { 
     ((Activity) context).finish(); 
    } 

    Runtime.getRuntime().exit(0); 
} 

из (https://github.com/JakeWharton/ProcessPhoenix) и https://stackoverflow.com/a/22345538/5353361

Смежные вопросы