1

「Editprofile.class」という別のアクティビティにつながる「Editprofile」ボタンを持つ「MainActivity.class」があるアプリを作成しています。それ(MainActivity)には、文字列(名前)を表示するTextViewもあります。

Editprofile.classはユーザーからの文字列を受け入れ、「追加」ボタンを押すと、新しい文字列がデータベースに更新され、前の文字列が置き換えられます。更新後、ユーザーが戻るボタンを使用してMainActivityに戻ると、TextViewに新しい更新された文字列を表示させます。MainActivityを再起動する必要があります。

これは、ユーザーが[プロファイルの編集]ボタンを押したときにfinish()関数を使用し、ユーザーがEditprofileアクティビティ中に戻るボタンを押すと、onBackPress()メソッドを介してMainActivityが再起動することで実現しました。

'Editprofile.class'を開始するインテントのコード:

public void edit_profile(View view)  {                                                
    Intent intent = new Intent(this, Editprofile.class)
    startActivity(intent)  
    finish();
  }

'MainActivity'に戻るコード:

@Override
public void onBackPressed() {
    finish();
    startActivity(new Intent(this, MainActivity.class));
}

なんとか思い通りの結果が得られましたが、一番効率的な方法か教えていただければ幸いです。

これをQ/A形式で投稿する必要がありますか?

4

5 に答える 5

3

しかし、MainActivityを「更新」して、新しく更新された名前が戻ったときに表示されるようにしたかったのです。

この種のことのためのonResume()方法があります。

于 2012-12-21T20:06:21.750 に答える
3

startActivityForResult()を使用して更新することをお勧めしMainActivityますonActivityResult()

onResume()(このメソッドは、から戻るだけでなく、他の多くのインスタンスによって呼び出されるため、で更新を確認する必要はありませんEditprofile。)

于 2012-12-21T20:08:25.423 に答える
3

@Mattiasの回答の代わりに、をEditprofile使い 始めることもできstartActivityForResult(...)ます。そのアクティビティは、ユーザーが実際に自分のプロファイルを編集したかどうかを示す結果を返すことができます。これは、でキャプチャできonActivityResult(...)ますMainActivity。プロファイルが変更された場合にのみ、TextView更新する必要があります。

onResume()数行の余分なコーディングが必要になる場合がありますが、ヒットするたびに更新するよりもわずかに効率的です。私の意見では、それも少しきれいですが、パフォーマンスの観点からはおそらく大したことではないでしょう。

例として、Android開発者のWebサイトのドキュメントを参照してください。

于 2012-12-21T20:09:08.563 に答える
2

ただ:

  • finish()で呼び出しを削除しますedit_profile()
  • onBackPressed()メソッド全体を削除します

アクティビティを再開する必要がないため(これで再開されます:より速く、より良く、より簡単に、意図したとおりに)。onResume()の代わりにでTextViewを更新しますonCreate()

于 2012-12-21T19:56:51.147 に答える
1

プログラムのどこでもonBackPressed()を使用/オーバーライドしないでください

MainActivity次のメソッドを親アクティビティに追加するだけです。EditProfile

MainActivity.java内

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

onClickメソッドでアクティビティを開始します

    startActivityForResult(intentName, 0);

EditProfile.javaで

onStop()メソッドを使用/オーバーライドします

    @Override
protected void onStop()
{
    super.onStop();

}
于 2012-12-21T20:28:32.490 に答える