0

OK、インテントを介してリストビューをクリックしたときにリストビューから別のクラスにデータを渡すことに関して、スタックオーバーフローに関する多くの質問がありますが、私の質問は異なります。だから私はリストアイテムを持っています。クリックするとノートクラスが開きます。リストのタイトルと本文があり、タイトルはクリックしたリストアイテムと同じです。このクラスの中には、別のクラスを開くボタンがあります。ここでもタイトルを渡す必要がありますが、SQL Lite DBのどこにあるのか、どのように渡されたのか、どのように渡されたのかを一生理解することはできません。ボタン。

リストアイテムのonclickリスナーは次のとおりです。

 @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    Intent i = new Intent(this, NoteEdit.class);
    i.putExtra(NotesDbAdapter.KEY_ROWID, id);
    startActivityForResult(i, ACTIVITY_EDIT); 
}

これを取得して、タイトルデータを渡す必要があるタイトル、本文、ボタンを表示するクラスを次に示します。ボタンの上にコメントしました。

public class NoteEdit extends Activity {

private EditText mTitleText;
private EditText mBodyText;
private Long mRowId;
private NotesDbAdapter mDbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {         

    super.onCreate(savedInstanceState);
    mDbHelper = new NotesDbAdapter(this);
    mDbHelper.open();

    setContentView(R.layout.note_edit);
    setTitle(R.string.edit_note);

    mTitleText = (EditText) findViewById(R.id.title);
    mBodyText = (EditText) findViewById(R.id.body);

    Button confirmButton = (Button) findViewById(R.id.confirm);
    Button button1 = (Button) findViewById(R.id.butt);

    mRowId = (savedInstanceState == null) ? null :
        (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);
    if (mRowId == null) {
        Bundle extras = getIntent().getExtras();
        mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
                                : null;
    }

    populateFields();

    confirmButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            setResult(RESULT_OK);
            finish();
        }

    });

    //HERE IS THE BUTTON WHICH I USE TO GET TO THE NEXT ACTIVITY, I NEED TO PASS THE DATA IN TITLE FROM HERE!!

    button1.setOnClickListener(new View.OnClickListener() {

         public void onClick(View v) {
                Intent openNext = new Intent("com.timer.RUNNING");
                startActivity(openNext);
            }
            });
}

private void populateFields() {
    if (mRowId != null) {
        Cursor note = mDbHelper.fetchNote(mRowId);
        startManagingCursor(note);
        mTitleText.setText(note.getString(
                note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
        mBodyText.setText(note.getString(
                note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));

    }
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    saveState();
    outState.putSerializable(NotesDbAdapter.KEY_ROWID, mRowId);
}

@Override
protected void onPause() {
    super.onPause();
    saveState();
}

@Override
protected void onResume() {
    super.onResume();
    populateFields();
}

private void saveState() {
    String title = mTitleText.getText().toString();
    String body = mBodyText.getText().toString();

    if (mRowId == null) {
        long id = mDbHelper.createNote(title, body);
        if (id > 0) {
            mRowId = id;
        }
    } else {
        mDbHelper.updateNote(mRowId, title, body);
    }
  }
 }

この質問が理にかなっていることを願っています。リストからのクリックからボタンを使用してその情報を渡す必要があったときに行き詰まりました。どんな助けでも大歓迎です!

4

2 に答える 2

2

静的変数を使用します。その変数に、クラスから移動したい別のクラスに値を設定します。これがあなたを助けますように

于 2012-12-26T12:30:35.977 に答える
1

タイトルデータを次のアクティビティに送信します。

   button1.setOnClickListener(new View.OnClickListener() {

      public void onClick(View v) {
           //Intent openNext = new Intent("com.timer.RUNNING");
           Intent openNext = new Intent(Current_Activity.this,NextActivity.this);
           openNext.putExtra("title",mTitleText.getText().toString());
           startActivity(openNext);
          }
     });
于 2012-12-26T12:32:57.360 に答える