java - 如何将结果从 alertDialog 传递到 onActivityResult

标签 java android sqlite android-activity sdk

我有 Activity_A 和 Activity_B。 我使用 onActivityResult 但遇到问题:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3, result=-1, data=Intent { (has extras) }} to activity {com.example.sellcar/com.example.sellcar.View_Offer}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

我想我不能通过这种方式将“结果”从 alertDialog 传递到 onActivityResult。 我不知道如何解决这个问题:/ 请帮忙

Activity_A:

bBUTTON.setOnClickListener(new OnClickListener() {          
            @Override
            public void onClick(View v) {           
            Intent intent = new Intent(Activity_A.this,Activity_B.class);
            startActivityForResult(intent, 3);

            }
        });
...
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(requestCode == 3 && resultCode == RESULT_OK){

                String pId = data.getStringExtra("MyData");

Toast.makeText(Activity_A.this,pId,Toast.LENGTH_LONG).show(); 
                }
    }

Activity _B:

    AlertDialog.Builder builder=new AlertDialog.Builder(View_Sell.this);
    builder.setTitle("UWAGA !").setMessage("blablabla");

    builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {       
       @Override
       public void onClick(DialogInterface dialog, int id) {                                                                                            
       String ostatnioDodanaSprzedaz="XYZ";
       Intent intent = new Intent();
       intent.putExtra("MyData", ostatnioDodanaSprzedaz);
       setResult(RESULT_OK, intent);
       onBackPressed();                                         
 } });

    builder.setNegativeButton("NO",  new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {                               
 } });  

AlertDialog ad = builder.create();
ad.show();

最佳答案

尝试替换:

setResult(RESULT_OK, intent);
onBackPressed();

在:

if (getParent() == null) {
    setResult(RESULT_OK, intent);
} else {
    getParent().setResult(RESULT_OK, intent);
}
finish();

关于java - 如何将结果从 alertDialog 传递到 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20410609/

相关文章:

android - 使用 esc/pos 热敏打印机 Android 打印真实的自定义尺寸位图

Android - 复杂的数据库和内容提供者

android - Android 的 SQLiteDatabase 中的冲突解决

java - setText 使应用程序崩溃

java - 如何在 Java 中移动数组中的位置?

android - 在 zxing fragment 库中打开/关闭手电筒

java - 字节码操作安全吗

ios - 如何在 uipickerview 中获取选定行的标题和值?

java - hibernate : Stale state exception

java - Box2d 碰撞不会在碰撞时运行