2

2つの活動をしています

最初のものは、コンテンツ プロバイダーからデータを取得して表示します。

2 番目のアクティビティにはボタンがあり、クリックすると、最初のアクティビティを呼び出して「更新」する必要があります。つまり、コンテンツ プロバイダーからデータをリロードします。

初めての活動です

...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         setContentView(R.layout.contactsview);
            // Grab data and put it onto screen
                getDataAndPutToUI();
    }

    @Override
    public void onStart()
    {
       //Refresh data
           getDataAndPutToUI();
    }
...

そして、これは私の2番目の活動です

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.optionsview);

        Button button = (Button) findViewById(R.id.intentButton);
            button.setOnClickListener(this);

    }   

    // This is bound to the "refresh" button
    @Override
    public void onClick(View v) {
        // Call first activity, to reload the contacts
        Intent i = new Intent(this, FirstActivity.class);
        startActivity(i);

    }

これは、そのような機能を実装する正しい方法ですか? 間違っているように感じますが、主張を裏付ける理由がわかりません

4

2 に答える 2

4

iuは、意図に合わせてフラグを設定することでそれを行うことができます

Intent i = new Intent();
                            i.setClass(this, Rss_Feed.class);
//                          i.setClass(Rss_Feed.this, Bru_Maps.class);
                            i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
于 2010-09-20T11:52:36.830 に答える
1

それはあなたが探している行動に依存します。現在実装しているように、最初のアクティビティは、ユーザーに表示されるたびに更新されます。たとえば、ユーザーが最初のアクティビティからホーム ボタンを押した後、ホームを長押しして最初のアクティビティに戻った場合、最初のアクティビティはそのデータを更新します。

それがあなたが望むものなら、あなたはそれを正しくやっています。

2 番目のアクティビティの更新ボタンを押したときに最初のアクティビティのみを更新する場合は、インテントを使用してそれを行う必要があります。1 つの方法は、ブーリアン エクストラを Intent に追加することです。

i.putExtra("reloadContent", true);

次に、onStart メソッドでこのエクストラを確認します。

于 2010-09-20T12:04:49.830 に答える