代码之家  ›  专栏  ›  技术社区  ›  Hatay Berkay Işıkoğlu

当活动重新启动时,如何将意图附加传递给onactivityresult?

  •  0
  • Hatay Berkay Işıkoğlu  · 技术社区  · 7 年前

    我正在写一个android应用程序。需要传递int值。我有一个列表视图,它有contextmenu。我必须启动Intent.Action\u呼叫。当我开始我的意图。我的应用程序将进入后台。当意图是完成我的申请开始调查。我的问题是;我并没有得到用户的点击位置。我试图插入putExtra,但在onActivityResult void中,我的用户点击位置的值并没有被接受,值变为零。我怎样才能得到±t?

       public boolean onContextItemSelected(MenuItem item) {
                AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    
            selectedPosition = info.position;
    
         //in here , this value is true.
                Toast.makeText(AnaMenu.this, String.valueOf(selectedPosition), Toast.LENGTH_LONG).show();
    
                switch (item.getItemId()) {
                    case MENU_Ara:
    
                        Intent i = getIntent();
                        final ArrayList<String> secilmis = i.getStringArrayListExtra("listem");
    
                        Intent ara = new Intent(Intent.ACTION_CALL);
                        ara.setData(Uri.parse("tel:" + secilmis.get(info.position).toString()));
    
    
                        ara.putExtra("selected", selectedPosition);
    
    
    
    
    
                        startActivityForResult(ara, AnketDegerlendirmesi);
    
    
    
    
    
    
                        return true;
                }
    
    
                return super.onContextItemSelected(item);
            }
    
    
    
    
         protected void onActivityResult(final int requestCode, int resultCode, final Intent data) {
    
                if (requestCode == AnketDegerlendirmesi){
                    Toast.makeText(AnaMenu.this,String.valueOf(selectedPosition),Toast.LENGTH_LONG).show();
    
                    final AlertDialog.Builder  mBuilder = new AlertDialog.Builder(AnaMenu.this);
                    mBuilder.setTitle("Deger");
                    mBuilder.setIcon(R.drawable.ic_build_black_24dp);
                    mBuilder.setMultiChoiceItems(afteractivitydialogitems, dialogcheckeditems, new DialogInterface.OnMultiChoiceClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int position, boolean isChecked) {
    
    
    
                            if (isChecked){
            mUserselecteditems.add(Integer.valueOf(dialogdegerleri[position]));
        }
        if (!isChecked) {
        if (mUserselecteditems.contains(Integer.valueOf(dialogdegerleri[position]))){
            mUserselecteditems.remove(Integer.valueOf(dialogdegerleri[position]));
        }
        }
         }
                    });
    
                    mBuilder.setCancelable(false);
                    mBuilder.setPositiveButton("Tamamdır.", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            String items = "";
                            toplamaislemi = 0;
                            for (int item : mUserselecteditems) {
                                items += "-" + item + "\n";
    
                                toplamaislemi = toplamaislemi + item;
    
    
    
       //When i want to get this value.Value is always zero(0)
                            String returnString = data.getStringExtra("selected");
                            kullanıcısayıdegerlistesi.remove(String.valueOf(returnString));
                            kullanıcısayıdegerlistesi.add(Integer.valueOf(returnString),String.valueOf(toplamaislemi));
                            oyunTextView.notifyDataSetChanged();
    
                        }
                    }  )             .show();
    
    
                }
    
    
                super.onActivityResult(requestCode, resultCode, data);
            }
    
    2 回复  |  直到 7 年前
        1
  •  4
  •   Ben P.    7 年前

    听起来你希望能够将其称为:

    Intent i = new Intent(...);
    i.putExtra("some_key", someValue);
    startActivityForResult(i, requestCode);
    

    然后,当您收到结果时:

    protected void onActivityResult(... Intent data) {
        data.getExtra("some_key"); // should be `someValue` from above
    }
    

    不幸的是,这不是它的工作原理。这个 Intent data onActivityResult() 是不一样的 Intent data 意图是非空的,以及其中包含的内容。

    通常,对于公共API,有关于在 数据 意图

        2
  •  0
  •   Hatay Berkay Işıkoğlu    7 年前

    SharedPreferences settings = getSharedPreferences("PREFS_NAME", MODE_PRIVATE);
                    SharedPreferences.Editor editor = settings.edit();
    editor.clear();
    
                    editor.putInt("kelime", selectedPosition);
    
                    editor.commit();
    

    在cod以上沉淀后,设置为ActivityResult

    SharedPreferences settings = getSharedPreferences("PREFS_NAME", MODE_PRIVATE);
                        int selec = settings.getInt("kelime",selectedPosition);
    

    最后,将适配器设置为相同的void:

    kullanıcısayıdegerlistesi.remove(selec);
                            kullanıcısayıdegerlistesi.add(selec ,String.valueOf(sonuc));