isAnswered=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG,"1isanswered : "+isAnswered);
Log.d(TAG, "matchinggame OnCreate");
super.onCreate(savedInstanceState);
dbHandler = new DatabaseHandler(this);
rLayout = new RelativeLayout(this);
object = new ObjectObject();
imageAnswer=new ImageView(this);
setContentView(rLayout);
trainingID = getIntent().getExtras().getInt("trainingid");
trainingObjectList = new ArrayList<TrainingObject>();
trainingObjectList = dbHandler.getAllTrainingObject(trainingID);
//// TODO: 02.05.2016 egitim kismi oalcak burda tek tek gosterilecek
rLayout.setBackgroundColor(Color.MAGENTA);
// Handler handler = new Handler(); Log.d(TAG,"2isanswered : "+isAnswered);
for(int i=0;i<2;i++){Log.d(TAG,"i:"+i); Log.d(TAG,"3tisanswered : "+isAnswered);
final int finalI = i;
// handler.postDelayed(new Runnable() {
// @Override
// public void run() {Log.d(TAG,"thread i: "+finalI);
Log.d(TAG,"4isanswered : "+isAnswered);
isAnswered = 0;
TrainingObject trainingObject = new TrainingObject();
trainingObject = trainingObjectList.get(finalI);
objectCount = 2;
//test icin
Log.d(TAG,"testicin trainingobjectid: "+trainingObject.getTrainingobjectID());
object = dbHandler.getObjectObject(trainingObject.getTrainingobjectAnswer());
if(trainingObject.getTrainingobjectThree()!=0) objectCount++;
if(trainingObject.getTrainingobjectFour()!=0) objectCount++;
if(trainingObject.getTrainingobjectFive()!=0) objectCount++;
Log.d(TAG,"matchinggame objcount: "+objectCount);
RelativeLayout.LayoutParams rLayParams = new RelativeLayout.LayoutParams(140,140);
rLayParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
rLayParams.addRule(RelativeLayout.CENTER_IN_PARENT);
imgBytes = object.getObjectImageBlob();
bmp = BitmapFactory.decodeByteArray(imgBytes, 0, imgBytes.length);
imageAnswer.setImageBitmap(bmp);
imageAnswer.setTag(trainingObject.getTrainingobjectAnswer());
imageAnswer.setId(R.id.imgAnswer);
rLayout.removeAllViews();
rLayout.addView(imageAnswer,rLayParams);
imageOne.setOnDragListener(MatchingGame.this);
imageAnswer.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) { Log.d(TAG,"6isanswered : "+isAnswered);
Log.d(TAG,"matchinggame setontouch");
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.d(TAG,"matchinggame setontouch if yes");
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);
v.setVisibility(View.INVISIBLE); Log.d(TAG,"7isanswered : "+isAnswered);
return true;
} else { Log.d(TAG,"8isanswered : "+isAnswered);
return false;
}
}
});
imageAnswer.setOnDragListener(MatchingGame.this);
Log.d(TAG,"*");
while(isAnswered==0){
//Log.d(TAG,"*");
}
// }
// }, 30000*finalI);Log.d(TAG,"thread sonrasi: "+finalI); Log.d(TAG,"5isanswered : "+isAnswered);
}Log.d(TAG,"ff");
}
isanswered = 0なので、無限ループにとどまるためです。しかし私は私のレイアウトを見ることができない、私はこのループが続く間、私はマゼンタを参照してください。秒後に黒い画面が表示されます。Android動的レイアウトは、oncreateメソッドの終了後にのみ表示されます。
しかし、そこにいる間、私はffをログに記録した後、oncreateを終了してレイアウトを変更します。
私はこれを検索しましたが、答えはありませんでした。ここ
Android layout only showing after oncreate method finishes
それはONSTARTしてみてくださいと言います。はい、私は同じことを試みました。
ここでは、syniteから値を取得するためのasynctaskコールしかありません。
私はforループを持っています、各反復で、私は画像を表示し、ユーザーはそれらを試してみます。
私はビューやフラグメントを使用しませんでした。
なぜそれは表示されるとすぐに画面に投稿されませんか?
フル活動はここにある:
https://gist.github.com/anonymous/87ccd4147ae0d202244bb78f51844f29
同じことです:forループの後にコードを取るonresumeしかし、うまくいきませんでした –
ので、私はこれを行うにはどうすればよいですか?なぜなら私はforループで5回の反復があり、各反復には異なるレイアウトがあるからです。 –
'AsyncTask'を使用してレイアウトを更新することをお勧めしますonPostExecuted' http://developer.android.com/intl/es /reference/android/os/AsyncTask.html –