1

私のアプリはメッセージアプリであり、受信トレイ機能を実行するアクティビティがあります。そのため、受信トレイの上部に未読メッセージをリストし、下部に既読メッセージをリストします。

したがって、未読メッセージをクリックすると、選択した特定のメッセージを表示する新しいアクティビティに移動し、データベースで既読としてマークします。したがって、戻るをクリックすると、前のアクティビティに移動すると、このメッセージが既読メッセージの中に表示されます。しかし、私の場合、それは古いシナリオを示しています。つまり、メッセージは未読の中にまだ表示されています。

アクティビティが戻ったときに更新する必要があると思ったので、次のような更新方法を試しました。

1.1。

public void onResume(Bundle s)
    {  // After a pause OR at startup
        super.onResume();
        this.onCreate(s);
    }

2.2。

Intent intent = new Intent(this, msgdisplayActivity.class); //msgdisplayActivity is activity which display the selected message. 
//intent.putExtra("someData", "Here is some data");
startActivityForResult(intent, 1);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode==RESULT_OK){
        Intent refresh = new Intent(this, inboxlist.class); //inboxlist is activity which list the read and unread messages
        startActivity(refresh);
        this.finish();
    }
}

しかし、これは両方ともそうではありませんでした。onResume()は呼び出されておらず、もう1つはエラーを示しています。

4

4 に答える 4

0

onResume()メソッドは、その署名のために呼び出されることはありません。

@Overrideメソッドをオーバーライドする場合はいつでも使用することをお勧めします。コードで使用@Overrideしていた場合、オーバーライドしようとしても成功しないという問題を指摘されていたでしょう。

あなたのポイントから判断すると、1Activity のライフサイクルをよりよく理解しようとすることをお勧めします。super.onCreate()onResume()super.onResume()

最初のコード スニペットは次のようになります。

@Override
protected void onResume() {
    super.onResume();
    // do what you need to do if your activity resumes
}

ただし、呼び出されるタイミングを理解していることを確認する必要がありますonResume()

実装に関してonActivityResult()は、「受信トレイ」アクティビティを再ロードするのが最も効率的な方法ではないかもしれませんが、うまくいくはずです。このコードは、次の 1 つの側面を除いては良さそうに見えます。このメソッドでは、super.onActivityResult()必須ではなく、意味のあるものに貢献できないため、呼び出しません。私は決してそれをしません、そしてそれはうまくいきます。したがって、この呼び出しを取り除き、エラーがまだ発生するかどうかを確認してください。

はいの場合は、エラーを投稿してください。

于 2013-03-10T13:35:26.530 に答える
0

リフレッシュレイアウトコードを1つのメソッドに入れることができます

例えば

void populatedata()
{
    //your code to show data in listview or lables
    //if you are using listview, then you can write adapter.notifyDataSetChanged(); to refresh list
}

次に、使用できます

Intent intent = new Intent(this, msgdisplayActivity.class); //msgdisplayActivity is activity which display the selected message. 
startActivityForResult(intent, 1);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
  if(resultCode==RESULT_OK){
    //call populatedatamethod
    populatedata();
  }
}

onCreate メソッドで使用できるのと同じメソッドです。

onCreate と onResume のコードを教えてください。あなたのコードに従って回答を編集できるようにするには?

onResume も onActivityResult() の直後に呼び出されるため、そこにコードを配置することもできます

于 2013-03-09T15:01:23.727 に答える
-1

デバイスが異なれば、アクティビティの破棄の処理も異なります。私が見つけた確かな方法は、状態をアプリデータベースに保存し、アプリのフォーカスを取得することです。

于 2013-03-09T14:17:43.820 に答える