2014-01-15 41 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

不应该addition.calc()be additionCalc()? – SoulRayder

+1

@Andrew Stewart,Gautham是正确的。 –

+0

你的代码是怎么回事?大声笑什么是'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. 如果要在onCreate方法中使用a和/或b,则必须在该方法中声明它们。

相关问题