2017-07-21 51 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理解。 –

相關問題