0

我可以使用与您在不同活动之间传递数据相同的过程吗?这将适用于活动和游标适配器之间的数据传递。产生的错误不是运行时是编译

The constructor Intent(MyAdapterQuestion, Class<Basic_database_questionsActivity>) is undefined

Intent i = new Intent(MyAdapterQuestion.this, Basic_database_questionsActivity.class);
            Bundle b = new Bundle();
            // get the current value of timerStart variable and store it in timerlogic
            //Log.e(LOGS, "Whatis the value of timerstart inside the intentcalls method" + aInt);

            b.putInt("timerlogic", aInt);

我有一个名为 MyAdapterQuestion 的适配器和一个名为 Basic_database_questionsActivity 的活动。

我有一个计数器,它在方法 bindView 方法中

public void bindView(View v, Context context, Cursor c) {

     if(radiopos1.isChecked())
        {

          // i want to update my main activity 
    // this method increment the correct answer by one I want to get that value and //pass it back to the activity      
    correctAnswer();

        }

    }
4

1 回答 1

2

不可以。您不能将 Intent 发送到适配器。Activity 创建了适配器,因此它应该能够与之通信。通过调用方法,在构造函数中传递参数等。

编辑:添加代码示例

如果适配器需要调用 Activity 中的方法,你可以这样做:

在我的适配器问题中:

// Stores a reference to the owning activity
private Basic_database_questionsActivity activity;

// Sets the owning activity (caller should call this immediately after constructing
//  the adapter)
public void setActivity(Basic_database_questionsActivity activity) {
    this.activity = activity;
}

// When you want to call a method in your activity (to get or set data), you do
//   something like this:
activity.setCorrectAnswer(answer);

在 Basic_database_questionsActivity 中:

// In the place where you create the adapter, do this:
MyAdapterQuestion adapter = new MyAdapterQuestion(parameters...);
adapter.setActivity(this); // Passes a reference of the Activity to the Adapter

public void setCorrectAnswer(int answer) {
    // Here is where the adapter calls the activity back
    ...
}

我希望你能明白。您只需要一种方法让适配器获取对 Activity 的引用,以便它可以在必要时调用其上的方法。

注意:更好的编程风格是将 Activity 作为参数包含在您的 Adapter 构造函数中,但由于您没有发布 Adapter 构造函数的代码,我不想让您感到困惑。

于 2012-07-04T16:47:46.383 回答