2

Webサービスによって返されるいくつかのフィールドを使用してアクティビティで動的テキストビューを作成します。ユーザーがデータを編集したい場合、ユーザーは別のアクティビティに送られます。彼が「戻る」ボタンをクリックすると、前のアクティビティのデータを更新したいのですが、正しい方法がわかりません。onResumeの代わりにonRestartメソッドを使用します

これが私のコードです:

データを表示する私の最初のアクティビティ:

public class QueryActivity extends Activity {

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

        new WSData() {
        @Override
        public void onPostExecute(final ArrayList<ArrayList<String>> result) {  int nbTextView = result.size();
            TextView[] textViewArray = new TextView[nbTextView];

            for (int i = 0; i < nbTextView; i++) {

                // Horizontal Layout to have the accountName and a button to
                // edit on the same line
                LinearLayout editLayout = new LinearLayout(
                        QueryActivity.this);
                Button edit = new Button(QueryActivity.this);
                edit.setBackgroundDrawable(getResources().getDrawable(
                        R.drawable.editer));

                editLayout.removeAllViewsInLayout();
                editLayout.setOrientation(LinearLayout.HORIZONTAL);
                dynamicWindow.addView(editLayout,
                        new LinearLayout.LayoutParams(
                                LinearLayout.LayoutParams.FILL_PARENT,
                                LinearLayout.LayoutParams.WRAP_CONTENT));

                textViewArray[i] = new TextView(QueryActivity.this);

                // retrieve every field from the result
                final String accountId = result.get(i).get(0);
                final String accountName = result.get(i).get(1);
                final String phone = result.get(i).get(2);
                final String industry = result.get(i).get(3);
                final String website = result.get(i).get(4);

// display only the accountName
                textViewArray[i].setText(accountName);
                textViewArray[i].setTextColor(0xFFFFFFFF);
                textViewArray[i].setGravity(Gravity.CENTER_VERTICAL);
                textViewArray[i].setVisibility(View.VISIBLE);

                edit.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(QueryActivity.this,
                                EditAccountActivity.class);
                                            startActivity(intent);
                    }
                });
}.execute(sessionName, null, "getAccountInfo"); 
}


@Override
public void onRestart() {
    super.onRestart();

}

私の他の活動、私は「戻る」をクリックしたときに私のデータを更新したい:

public class EditAccountActivity extends Activity {                 
back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
             finish();
            }
    });
4

2 に答える 2

1
When he clicks on the "back" button i want to update data in the previous activity

1- startActivityForResult()を使用してアクティビティ2を開始します。

2 2番目のアクティビティのバックキーイベントをオーバーライドし、インテントとResult_OKを設定します

3-最初のアクティビティのonActivityForResultでデータを取得します

于 2012-06-26T15:04:43.790 に答える
0

私はそのようにしました:

アクティビティ1:

public void onCreate(Bundle savedInstanceState) {
...
for (int i = 0; i < nbTextView; i++) {
...
textViewArray[i].setId(Integer.parseInt(accountIdValue
                        .substring(3)));
...
}}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        TextView text = (TextView) findViewById(Integer.parseInt(data
                .getStringExtra("accountId")));

        // update the accountName
        String changedAccountName = data.getStringExtra("accountname");
        if (changedAccountName != null) {
            text.setText(data.getStringExtra("accountname"));
        }

アクティビティ2:

Intent intent = new Intent();
for (Iterator<Map.Entry<String, String>> field = fieldMap
                    .entrySet().iterator(); field.hasNext();) {
                Map.Entry<String, String> entry = field.next();
                if (checkEditTextEmpty(entry.getValue())) {
                    intent.putExtra(entry.getKey(), entry.getValue());
                    allEmptyField = false;
                } else {
                    field.remove();
                }
            }
intent.putExtra("accountId", accountId.substring(3));
                setResult(RESULT_OK, intent);
                finish();
            }
于 2012-06-27T10:24:33.547 に答える