0

データ(グリッドから選択されたアイテムの位置)を親アクティビティに戻そうとしていますが、コードが失敗します。debbugerは、子アクティビティで「data.putExtra( "POS_ICON"、position)」のキーとデータを正しく取得する方法を示しますが、親アクティビティでonActivityResult()を実行すると、debbugerはキーなしの「data」を表示します。データが返されました...データがコンテンツを失ったようなものです。私は他の投稿やチュートリアルをフォローしましたが、方法はありません。助けてください。

親の活動:

public void selIcono(View v){
    Intent intent = new Intent (this, SelIconoActivity.class);
    startActivityForResult(intent,PICK_ICON_REQUEST);
}

protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {    //here's the problem: no data is returned!!
    if (requestCode == PICK_ICON_REQUEST) {
        if (resultCode == RESULT_OK) {
            // An icon was picked. 
            putIcon(data.getIntExtra("POS_ICON", -1)); 
        }
    }
}

子供の活動:

public class SelIconoActivity extends Activity {    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sel_icono);

        GridView gridview = (GridView)findViewById(R.id.gr_iconos);
        gridview.setAdapter(new ImageAdapter (this));

        gridview.setOnItemClickListener(new OnItemClickListener() {
           public void onItemClick(AdapterView<?> parent, View v, int position, long id) {                  
                Intent data = new Intent();
                data.putExtra("POS_ICON", position);                  
                setResult(Activity.RESULT_OK, data); 

                finish();          
            }
        });     
    }       
}
4

1 に答える 1

2

putIcon(data.getIntExtra("POS_ICON", -1));コードをこれに 置き換えます

putIcon(data.getExtras().getInt("POS_ICON", -1));
于 2012-11-29T17:02:49.773 に答える