0

私は意図の助けを借りて行IDを渡しています。カスタムアダプターである呼び出し方法 -

holder.text.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(), "TEXT CLICKED" + pos , Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(context,ReminderModificationActivity.class);
                long longPos = (long)pos;
                intent.putExtra(TasksDBAdapter.KEY_ROWID, pos);
                Log.i(TAG, "row clickd --> " + longPos);
                ((Activity) context).startActivityForResult(intent, ACTIVITY_EDIT);
            }
        });

OnCreate()ReminderModificationActivity のメソッドは data.Code を取得しようとします -

protected void onCreate(Bundle savedInstanceState){
        dbHelper = new TasksDBAdapter(this);

        //set current theme
        settingsDBAdapter = new SettingsDBAdapter(this);
        settingsDBAdapter.open();

        setSettingsTheme();
        setContentView(R.layout.reminder_modify);
        mCalendar =  Calendar.getInstance();

        Log.i(getLocalClassName(), "VALUE of Button--->" + findViewById(R.id.SetDateButtonId));
        mDateButton = (Button) findViewById(R.id.SetDateButtonId);
        mTimeButton = (Button) findViewById(R.id.SetTimeButtonId);
        mConfirmButton = (Button) findViewById(R.id.SaveButtonId);
        mTitleText = (EditText) findViewById(R.id.TitleEditTextId);
        mBodyText = (EditText) findViewById(R.id.DescriptionEditTextId);

        mRowId = savedInstanceState != null ? savedInstanceState.getLong(TasksDBAdapter.KEY_ROWID) : null ;
        registerButtonListenersAndSetDefaultText();
        Log.i(TAG, "getIntent-->" + getIntent() + mRowId);
        //code to check what row id have been passed
        if(getIntent() != null) { 
            ---->>>MAIN CODE
            Log.i(TAG, "mRowId in getintent-->" +  mRowId + "row id passed-->" +  getIntent().getLongExtra(TasksDBAdapter.KEY_ROWID, -1));
            mRowId =  getIntent().getLongExtra(TasksDBAdapter.KEY_ROWID, -1);
            // Do stuff with the row id here
            if(mRowId != -1){
                //code if RowId valid

            }
        }

        super.onCreate(savedInstanceState);
        Log.i(TAG, "mROwId in onCreate ReminderNotification again-->" + mRowId);    
    }

MAIN CODE としてマークされた行はインテント データをキャプチャしますが、Log.i は次の値を提供します

getIntent().getLongExtra(TasksDBAdapter.KEY_ROWID, -1))

as -1.これについて私を助けてください。よろしくお願いします、レイ

4

1 に答える 1

0

にキャストposすると、インテントエクストラでlongPos使用する必要がありますが、を使用します。longPospos

コードを次のように変更する場合:

        Intent intent = new Intent(context,ReminderModificationActivity.class);
        long longPos = (long)pos;
        intent.putExtra(TasksDBAdapter.KEY_ROWID, longPos); //<< changed to longPos

動作するはずです

于 2012-11-15T19:12:20.257 に答える