2014-01-15 4 views
-3

Я пытаюсь вызвать метод outwith onCreate внутри потока onCreate. Однако он говорит, что метод не может быть разрешен. Я знаю, что метод не может быть внутри потока onCreate, поэтому как вы вызываете метод из него. Вот мой код для класса.Как вызвать метод из другого метода

package com.alarm.mobilegame; 

import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class startGames extends MainActivity { 

public void additionCalc() { 
    int Min = 1; 
    int Max = 99; 
    int a = Min + (int)Math.random()*(Max-Min); 
    int b = Min + (int)Math.random()*(Max-Min); 
    int c = (int) a + b; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.start_game1); 

    Button buttonMathStart = (Button) findViewById(R.id.button1); 
    buttonMathStart.setOnClickListener(new OnClickListener() {    
     public void onClick(View v) { 
      TextView addquestion; 
      TextView subquestion; 
      TextView divquestion; 
      TextView mulquestion; 
      addition.calc(); 
      addquestion = (TextView) findViewById(R.id.textView1); 
      addquestion.setText("" + a, b); 
      subquestion = (TextView) findViewById(R.id.textView2); 
      subquestion.setText("sub"); 
      divquestion = (TextView) findViewById(R.id.textView3); 
      divquestion.setText("div"); 
      mulquestion = (TextView) findViewById(R.id.textView4); 
      mulquestion.setText("mul"); 
     }}); 
} 

}

+5

Не следует добавить.calc() be additionCalc()? – SoulRayder

+1

@ Андрю Стюарт, Гаутам прав. –

+0

Что происходит с вашим кодом? Lol, что такое 'addquestion.setText (" "+ a, b);'? –

ответ

1

Вы звоните по методу из OnCreate, как это:

Пример:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.example); 
    myMethod(); //Any parameters you need in the method can be passed through the parentheses 
} 

myMethod(){ 
//Do stuff in here 
} 

В вашем случае, вы должны поставить эту строку в OnCreate() для позвоните по следующему методу:

additionCalc(); 
0

Есть много проблем - первое, что вы не называете метод, который вы создали правильно.

  1. Изменить addition.calc();to additionCalc();

  2. Вызов этого метода не будет делать ничего для вас. Он добавит числа в этот метод, но переменные являются локальными для этого метода, поэтому ничего не произойдет в onCreate.

  3. Чтобы сделать additionCalc() полезным, имейте это в виду return расчет дополнений. Например:

    public int additionCalc() { // not void anymore - it returns an int 
        int Min = 1; 
        int Max = 99; 
        int a = Min + (int)Math.random()*(Max-Min); 
        int b = Min + (int)Math.random()*(Max-Min); 
        int c = (int) a + b; 
        return c; // return the sum 
    } 
    
  4. Чтобы использовать метод, вместо addquestion.setText("" + a, b); вы можете использовать addquestion.setText("" + additionCalc()); и установит текст, который будет сумма.

  5. Если вы хотите использовать a и/или b в методе onCreate, то вы должны объявить их в этом методе.

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