0

2 つのクラスを作成しましたが、実際にはどちらも Activity を拡張します。私がやろうとしているのは、2 番目のクラスからメソッドを呼び出すことです。

私がやろうとしているのは、2番目のクラスからメソッドを呼び出してから、最初のクラスに実装することですが、残念ながら成功しませんでした。

この問題を解決するにはあなたの助けが必要です。ありがとうございました

私の最初のクラス:

package com.math4kids;

import android.app.Activity;
import android.os.Bundle;

public class testing002 extends Activity {

private Sounds myotherclass;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.numeracy);

    myotherclass.Randomsoundforrightanswer();

}

}

2 番目のクラス:

package com.math4kids;

import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;

public class Sounds extends Activity {

MediaPlayer cool, good, perfect, sweet, excellent, goodthinking, greatjob,
        notbad, thatstheway, youdidit, yes, again, wrong, sorry,
        sundfornum01, sundfornum02;
public Random random = new Random();

public Sounds(Context context){
    super.getApplicationContext();
}

public void Randomsoundforrightanswer() {
    cool = MediaPlayer.create(this, R.raw.cool);
    good = MediaPlayer.create(this, R.raw.good);
    perfect = MediaPlayer.create(this, R.raw.perfect);
    sweet = MediaPlayer.create(this, R.raw.sweet);
    excellent = MediaPlayer.create(this, R.raw.excellent);
    goodthinking = MediaPlayer.create(this, R.raw.goodthinking);
    greatjob = MediaPlayer.create(this, R.raw.greatjob);
    notbad = MediaPlayer.create(this, R.raw.notbad);
    thatstheway = MediaPlayer.create(this, R.raw.thatstheway);
    youdidit = MediaPlayer.create(this, R.raw.youdidit);
    yes = MediaPlayer.create(this, R.raw.yes);

    switch (random.nextInt(11)) {

    case 0:
        cool.start();
        break;
    case 1:
        good.start();
        break;
    case 2:
        perfect.start();
        break;
    case 3:
        sweet.start();
        break;
    case 4:
        excellent.start();
        break;
    case 5:
        goodthinking.start();
        break;
    case 6:
        greatjob.start();
        break;
    case 7:
        notbad.start();
        break;
    case 8:
        thatstheway.start();
        break;
    case 9:
        youdidit.start();
        break;
    case 10:
        yes.start();
        break;

    }

}


}
4

4 に答える 4

9

シンプルな通常の Java ファイルを作成し、そのクラスでこれらのメソッドを定義します。

import java.util.Random;
import android.media.MediaPlayer;

public class Sounds {

    Context context;
    MediaPlayer cool, good, perfect, sweet, excellent, goodthinking, greatjob,
        notbad, thatstheway, youdidit, yes, again, wrong, sorry,
        sundfornum01, sundfornum02;
    public Random random = new Random();

    public Sounds(Context context){
        this.context = context;
    }

    public void Randomsoundforrightanswer() {
        cool = MediaPlayer.create(context, R.raw.cool);
        good = MediaPlayer.create(context, R.raw.good);
        perfect = MediaPlayer.create(context, R.raw.perfect);
        sweet = MediaPlayer.create(context, R.raw.sweet);
        excellent = MediaPlayer.create(context, R.raw.excellent);
        goodthinking = MediaPlayer.create(context, R.raw.goodthinking);
        greatjob = MediaPlayer.create(context, R.raw.greatjob);
        notbad = MediaPlayer.create(context, R.raw.notbad);
        thatstheway = MediaPlayer.create(context, R.raw.thatstheway);
        youdidit = MediaPlayer.create(context, R.raw.youdidit);
        yes = MediaPlayer.create(context, R.raw.yes);

        switch (random.nextInt(11)) {

            case 0:
                cool.start();
                break;
            case 1:
                good.start();
                break;
            case 2:
                perfect.start();
                break;
            case 3:
                sweet.start();
                break;
            case 4:
                excellent.start();
                break;
            case 5:
                goodthinking.start();
                break;
            case 6:
                greatjob.start();
                break;
            case 7:
                notbad.start();
                break;
            case 8:
                thatstheway.start();
                break;
            case 9:
                youdidit.start();
                break;
            case 10:
                yes.start();
                break;

        }
    }
}   

このようなアクティビティで通常の Java ファイルのメソッドを呼び出します。

import android.app.Activity;
import android.os.Bundle;
public class testing002 extends Activity {
private Sounds myotherclass;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.numeracy);
        new Sounds().Randomsoundforrightanswer(this);
    }
}
于 2013-02-03T10:03:31.340 に答える
2

なぜあなたはそれをしなければならないのですか?
なぜSoundsアクティビティをクラス拡張するのですか? 公式ドキュメントのActivity
をもう一度読んでください。 コンテキストが必要な場合は、パラメータのようにクラスに渡します。

Sounds

また、 Android 開発ガイドも参照する必要があります。

于 2013-02-03T10:02:37.480 に答える
0

一度に 1 つのアクティビティのみがインスタンス化されます。あるアクティビティから別のアクティビティを呼び出そうとしないでください。

代わりに、呼び出したいメソッドを含む 3 番目のクラスを作成する必要があります。

public class SoundManager{

    private context;

    public SoundManager(Context context){

        context.context = context;

    }

    public void Randomsoundforrightanswer() {

        cool = MediaPlayer.create(context, R.raw.cool);
        good = MediaPlayer.create(context, R.raw.good);
        perfect = MediaPlayer.create(context, R.raw.perfect);
        sweet = MediaPlayer.create(context, R.raw.sweet);
        excellent = MediaPlayer.create(context, R.raw.excellent);
        goodthinking = MediaPlayer.create(context, R.raw.goodthinking);
        greatjob = MediaPlayer.create(context, R.raw.greatjob);
        notbad = MediaPlayer.create(context, R.raw.notbad);
        thatstheway = MediaPlayer.create(context, R.raw.thatstheway);
        youdidit = MediaPlayer.create(context, R.raw.youdidit);
        yes = MediaPlayer.create(context, R.raw.yes);

        switch (random.nextInt(11)) {

        case 0:
            cool.start();
            break;
        case 1:
            good.start();
            break;
        case 2:
            perfect.start();
            break;
        case 3:
            sweet.start();
            break;
        case 4:
            excellent.start();
            break;
        case 5:
            goodthinking.start();
            break;
        case 6:
            greatjob.start();
            break;
        case 7:
            notbad.start();
            break;
        case 8:
            thatstheway.start();
            break;
        case 9:
            youdidit.start();
            break;
        case 10:
            yes.start();
            break;

        }
    }
}

ただし、MediaPlayer でさらに作業を行う必要があります。続行する前に、そのドキュメントを読む必要があります。私が示したコードは、何をする必要があるかの基本を示していますが、うまくいきません。

最後に、先に進む前に Java と OOP の基礎を学ぶことをお勧めします。

于 2013-02-03T10:04:37.367 に答える
0

testing002 クラスが実際にアクティビティとして使用したいアクティビティでない限り、randomsound... 関数を別のクラスに移動する必要があります。

サウンド クラスに似ていますが、Activity ではありません。そのクラスで関数を定義すると、別のクラスで構築して呼び出すことができます。

于 2013-02-03T10:05:49.100 に答える