こちらで何度か質問させていただいて、自分なりに今コードを書いています。
MainActivityで用意したint型の配列codecide(初期値 {2,0,0,0,0,0,2}をintentでransuというサブアクティビティに送り、乱数を取得し、その乱数の値をcodicideに格納して、またMainActivityに送り返す、ということをしています。
実行はするのですが、値が初期値のまま変わりません。何度実行しても同じなので、乱数でそうなったとはとても考えられないのですが、intentの処理がおかしいのでしょうか。それとも、intentは正しくできているが、私の乱数生成の処理、その後の条件による前後入れ替えの処理がおかしいのでしょうか。
MainActivity
import android.app.Activity;
import android.media.JetPlayer;
import android.os.Bundle;
import android.content.Intent;
public class MainActivity extends Activity {
static JetPlayer jetPlayer; static boolean aug; static int[] codicide = {2,0,0,0,0,0,2}; //0 = Am 1 = B 2 =C 3 = Dm 4 = Em 5= F 6 = G @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); Intent intent = new Intent(this,com.example.sere.myapplication.ransu.class); intent.putExtra("codicide",codicide); int requestCode = 1000; startActivityForResult(intent,requestCode); this.jetPlayer = JetPlayer.getJetPlayer(); this.jetPlayer.loadJetFile(getResources().openRawResourceFd(R.raw.pianist)); jetPlayer.clearQueue(); for(int i=0;i<7;i++) { aug = jetPlayer.queueJetSegment(codicide[i], -1, 0, 0, 0, (byte) 0); if (aug == false){ int trueCount=0; while(trueCount !=2){ aug = jetPlayer.play(); if(aug == true) { trueCount++; } } jetPlayer.clearQueue(); } } jetPlayer.play(); } public void onActivityResult(int requestCode,int resultCode,Intent intent) { super.onActivityResult(requestCode,resultCode,intent); //startActivityForResult()の際に指定した識別コードとの比較 if(requestCode == 1000){ //返却結果ステータスとの比較 if(resultCode == Activity.RESULT_OK){ //返却されてきたintentから値を取り出す codicide = intent.getIntArrayExtra("RESULT"); } } }
}
ransu(SubActivity)
import java.util.Random;
import android.app.Activity;
import android.widget.TextView;
import android.content.Intent;
import android.os.Bundle;
public class ransu extends Activity{
@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); Intent intent = getIntent(); int[] codicide = intent.getIntArrayExtra("codicide"); codicide = SoundRandom(codicide); Intent intents = new Intent(/*this,MainActivity.class*/); intents.putExtra("RESULT",codicide); setResult(RESULT_OK,intents); //int requestCode = 1000; // startActivityForResult(intents,requestCode); finish(); } public static int[] SoundRandom(int[] codicide){ TextView textview = null; int count = 0; Random rnd = new Random(); int ran = 0; int[] code ={0,0,0,0,0,0,0}; int taihi = 0; boolean aug; //0 = Am 1 = B 2 =C 3 = Dm 4 = Em 5= F 6 = G for(int i = 0; i<6;i++){ ran = rnd.nextInt(7);//0~6の乱数を発生させ、配列に格納。 code[i] = ran; } taihi = 1; do { taihi = 0; for (int j = 0; j < 6; j++) { for (int i = 1; i < 6; i++) { if (code[j] == 6) { if (code[i] == 5) { //G→Fなら taihi = code[j]; code[j] = code[i]; //前後入れ替え code[i] = taihi; } else if (code[i] == 3) {//G→Dmなら taihi = code[j]; code[j] = code[i]; code[i] = taihi; } }else if (code[j] == 3) { if (code[i] == 5) { //Dm→Fなら taihi = code[j]; code[j] = code[i]; //前後入れ替え code[i] = taihi; } } else if (code[j] == 4) { if (code[i] == 6) { //Em→Gなら taihi = code[j]; code[j] = code[i]; //前後入れ替え code[i] = taihi; } } else if (code[j] == 0) { if (code[i] == 2) { //Am→Cなら taihi = code[j]; code[j] = code[i]; //前後入れ替え code[i] = taihi; } } String henkan = String.valueOf(code[i]); CharSequence text = henkan; textview.setText(text); } } }while(taihi != 0);//入れ替えが発生しなくなるまでやる。 for(int i=1;i<6;i++){ codicide[i] = code[i-1]; //最初と最後はC。 } return (codicide); }
}
AndroidManifest
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sere.myapplication" >
</manifest><application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ransu" android:label="@string/app_name" > </activity> </application>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/23 12:50
2015/08/23 13:11
2015/08/23 14:35 編集
2015/08/24 23:40