-2

私はこのstackoverflowリンクに従います5秒ごとにアクティビティを更新するアクティビティを自動更新します 5秒ごとではなく、作成時にのみアクティビティを1回更新したい

public void onCreate(Bundle savedInstanceState)  
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  this.mHandler = new Handler();

  this.mHandler.postDelayed(m_Runnable,5000);

}//onCreate

private final Runnable m_Runnable = new Runnable()
{
  public void run()
  {
    Toast.makeText(refresh.this,"in runnable",Toast.LENGTH_SHORT).show();

    refresh.this.mHandler.postDelayed(m_Runnable, 5000);            
  }

};//runnable
4

1 に答える 1

0

コメントで実際の問題を説明したので、ここで回答します。

アプリを 5 秒ごとに更新しないでください。インテントの結果に反応する必要があります。

解決策その 1 (ActivityForResult アプローチ)

これはあなたがそれを行う方法です:

private static final int SELECT_PHOTO = 100;

インテントを開始する

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, SELECT_PHOTO); 

この部分は、結果に対して呼び出されます。そして、このメソッドでアクティビティを更新する必要があります。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
    case SELECT_PHOTO:
        if(resultCode == RESULT_OK){  
            Uri selectedImage = imageReturnedIntent.getData();
            InputStream imageStream = getContentResolver().openInputStream(selectedImage);
            Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
        }
    }
}

編集: 明確にするために: 何が起こるかというと、アクティビティを作成することです。あなたの意図を呼び出します。あなたの活動は一時停止onPause()され、ピッキングの後に再開されonResume()ます。したがって、一時停止した後にアクティビティを更新したい場合。この動作をonResume()メソッドに記述します。それでも、何らかの結果のためにインテントを開始している場合。上記の方法を使用して、結果をアクティビティに追加します。

解決策 2 (一般的なアプローチ)

@Override
protected void onResume() {
    super.onResume();
    //Refresh here
}
于 2013-04-26T11:12:59.723 に答える