2017-07-21 13 views
0

我正在写一个android应用程序。需要传递int值。我有一个listview它有contextmenu.I必须启动Intent.Action_Call。当我开始我的意图。我的应用程序将会背景。当意图完成后,我的应用程序开始调查。我的问题是;我没有得到用户的点击位置。我试图插入putExtra但在onActivityResult void不接受我用户的点击位置和值的值为零。如何我能得到它吗 ?如何在活动重新启动时将意图附加项传递给onactivity结果?

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); 
     } 

回答

0

首先,把这个onContextItemSelected

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

       editor.putInt("kelime", selectedPosition); 

       editor.commit(); 

安顿下来以上的鳕鱼后,设置onActivityResult

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

最后,设置适配器同样无效:

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

这听起来像你希望能够把这个:

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 
} 

不幸的是,这是不是怎么运行的。 onActivityResult()Intent data参数与您用于启动该活动的Intent不同。您开始的活动可以完全控制data意图是否为非空,以及其中的内容。

通常对于公共APIs,有关于您可以期望在data意图内有什么的文档。

+0

确定。所以我不能实现这个选定的位置。但我怎么能得到它?如果我必须创建数据库我做。我的应用程序的目的是用户的单击列表视图,然后拨打电话号码,然后设置新值到列表视图,当电话结束时显示您调查..如果您有任何文档的话题。请分享它,它必须找到方法 –

+0

您可以在点击时记录数值(例如,共享偏好,数据库或甚至是活动中的变量),然后在onActivityResult()中使用该值'',或者你可以将你需要保存的值编码到你的requestCode中(例如使用位掩码)。 –

+0

如何将值编码到我的requestCode中。İf它不工作我要共享首选项tag.I理解。 –

相关问题