如何在适配器列表视图中调用onActivityResult?

时间:2013-10-24 20:44:42

标签: android listview android-listview onactivityresult

我正在学习如何在自定义适配器列表视图中使用resultActivity更改单个项目。它是如何工作的?

这是我在自定义适配器列表视图中的startActivityForResult时的代码

holder.isi_layout.setOnClickListener(new android.view.View.OnClickListener(){

        public void onClick(View v) 
        {

                            Intent i = null;                                
                            i = new Intent(activity, DetailLaporanActivity.class);                              
                            Bundle b = new Bundle();
                            b.putString("position", Integer.toString(position));

                            i.putExtras(b);
                            activity.startActivityForResult(i, mRequestCode);                                  
                            activity.overridePendingTransition (R.anim.push_left_in, R.anim.push_left_out);


        }
    });                

和这个OnResultActivity

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode==mRequestCode) {
            if(resultCode == RESULT_OK){
                String position = data.getStringExtra("position");
                String status_favorite = data.getStringExtra("status_favorite");
                String jumlah_favorite = data.getStringExtra("jumlah_favorite");
                String jumlah_komentar = data.getStringExtra("jumlah_komentar");
            }

            Toast.makeText(getApplicationContext(), "This code Success get Result", Toast.LENGTH_LONG).show();
        }
    }

当我在适配器中放入OnResultActivity时,代码是错误的, RESULT_OK 得到通知无法解析为变量

但如果我放入MainActivity,这不是错误但不是获得值结果,我检查 Toast.makeText(getApplicationContext(),“此代码成功获取结果”,Toast.LENGTH_LONG)。show(); 但没有吐司,....

有人帮帮我吗?它是如何工作的? 抱歉,我的英文......

2 个答案:

答案 0 :(得分:3)

您添加了未解析的RESULT_OK,因此您应该在DetailLaporanActivity.class中设置它。

public class DetailLaporanActivity extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    setResult(RESULT_OK);

  }
}

并且您可以在onActivityResult方法中使用RESULT_OK。

答案 1 :(得分:2)

这是因为RESULT_OK是Activity类的常量。因此,您需要在Adapter类中对其进行限定:

Activity.RESULT_OK