Java 在BaseAdapter中调用OnCitivityResult
我将一个参数从第二个活动传递到第一个活动,但是程序没有输入第一个活动中的activityresult方法,它什么都没有 在我的第一次活动中,我有两门课。 第一个我执行查询,调用第二个类ListAdapter:Java 在BaseAdapter中调用OnCitivityResult,java,android,Java,Android,我将一个参数从第二个活动传递到第一个活动,但是程序没有输入第一个活动中的activityresult方法,它什么都没有 在我的第一次活动中,我有两门课。 第一个我执行查询,调用第二个类ListAdapter: public class view_records extends Activity { public void getProduct() { comandSQL = "Select * from Inventario"; try { Stateme
public class view_records extends Activity {
public void getProduct() {
comandSQL = "Select * from Inventario";
try {
Statement statement = MainActivity.connect.createStatement();
rs = statement.executeQuery(comandSQL);
ArrayList<product_model> product_list = new ArrayList<product_model>();
String tidno = "", tdesc = "";
while(rs.next()){
tidno = rs.getString("No_");
tdesc = rs.getString("Descripción Completa");
product_model _ProductModel = new product_model();
_ProductModel.setIdno(tidno);
_ProductModel.setProductDesc(tdesc);
_productlist.add(_ProductModel);
}
listview.setAdapter(new ListAdapter(this));
} catch (Exception e) {
Log.e("ERROR",e.getMessage());
}
}
这是第二项活动的一部分
public class modificar_productos extends Activity implements OnClickListener {
String pos;
double costo;
Intent i;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.modificar_productos);
i = getIntent();
tvProd = (TextView) findViewById(R.id.tv_prod);
tvDesc = (TextView) findViewById(R.id.tv_desc);
tvProd.setText(i.getExtras().getString("id"));
tvDesc.setText(i.getExtras().getString("desc"));
pos = i.getExtras().getString("pos");
btGuardar = (Button) findViewById(R.id.bt_guardar);
btGuardar.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bt_guardar:
if (etCant.getText().toString().equals("")) {
Toast.makeText(modificar_productos.this, "Por favor, ingrese la cantidad",Toast.LENGTH_LONG).show();
} else {
Intent data = new Intent();
data.putExtra("pos",pos);
setResult(RESULT_OK, data);
finish();
}
break;
}
}
}您使用了错误的条件:
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (RESULT_OK == request_code){ <--- here
...
}
}
requestCode是您开始活动的代码:startActivityForResult(意图,请求代码)
,因此您可以这样使用它:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch (requestCode) {
case request_code:
if (resultCode == RESULT_OK) {
// do your stuff here
}
break;
}
}
编辑1:必须将onActivityResult
方法放入查看\u记录
活动
类中。ListAdapter
是在view\u records
中启动的,因此它会将结果传递给此活动
编辑2:刷新适配器
public class view_records extends Activity {
ListAdapter mAdapter; // create adapter handler
public void getProduct() {
// ...
mAdapter = new ListAdapter(this);
listview.setAdapter(mAdapter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch (requestCode) {
case request_code:
if (resultCode == RESULT_OK) {
mAdapter.notifyDataSetChanged();
}
break;
}
}
}
你好我试过了,但没用:(,我在一些示例中看到该方法有@override,但我无法这样做。你不能在ListAdapter类中使用
onActivityResult
。它必须在带有@override的Activity类中使用。将onActivityResult
放入查看记录
ActivityIt运行!!但是…我必须刷新我的适配器,然后从ListAda调用它pter类…您可以在ActivityResult方法中刷新适配器,选中编辑2。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch (requestCode) {
case request_code:
if (resultCode == RESULT_OK) {
// do your stuff here
}
break;
}
}
public class view_records extends Activity {
ListAdapter mAdapter; // create adapter handler
public void getProduct() {
// ...
mAdapter = new ListAdapter(this);
listview.setAdapter(mAdapter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch (requestCode) {
case request_code:
if (resultCode == RESULT_OK) {
mAdapter.notifyDataSetChanged();
}
break;
}
}
}