2015-11-04 87 views
1

我有下面的代碼,我試圖在半透明的活動中顯示一個簡單的選項列表。然而,這個對話並沒有出現,但也沒有例外。有任何想法嗎?Android AlertDialog不顯示何時show()方法調用

public class SendToActivity extends AppCompatActivity { 
    List<String[]> players; 
    String[] chosen_player; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     AlertDialog.Builder builder = new AlertDialog.Builder(SendToActivity.this); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 
     for(String[] player: players){ 
      adapter.add(player[0]); 
     } 
     builder.setTitle("Which Player?"); 
     builder.setAdapter(adapter, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 
       chosen_player = players.get(item); 
      } 
     }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
+0

你想達到什麼?這是你的班級中唯一的代碼? – Jas

+0

否;還有其他的代碼。播放列表是在調用此片段之前構建的(仍在onCreate方法中)。然後用戶從列表中選擇一個玩家,然後發生其他一些事情。 – askvictor

+0

嘗試發表評論(String [] player:players){ adapter.add(player [0]); },然後嘗試在問題出現在您的收藏集後時顯示警報。 – KDeogharkar

回答

0

您可以使用下面的代碼來顯示對話框中的列表。

final Dialog dialog = new Dialog(mContext); 
    dialog.setContentView(R.layout.dialog_list); 
    dialog.setTitle("Select Continent"); 
    final ListView listView = (ListView) dialog.findViewById(R.id.list); 

    dialog.show(); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, 
      android.R.layout.simple_list_item_1, android.R.id.text1, "Pass your arrayList"); 
    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      int itemPosition = position; 


      strContinent = (String) YourArrayList.get(position); 

      dialog.cancel(); 

     } 

    }); 

dialog_list.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_marginTop="5dp" 
     android:orientation="vertical" > 

     <ListView 
      android:id="@+id/list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

     </ListView> 

    </LinearLayout> 

編碼快樂..

1

試試這個,

AlertDialog.Builder alertBuilder; // Call this variable globally. 

alertBuilder = new AlertDialog.Builder(SignUp.this); 

      alertBuilder.setTitle(GlobalFields.DIALOG_TITLE); 

      // Set an EditText view to get user input 
      final EditText input = new EditText(SignUp.this); 
      input.setHint("Enter Code"); 
      alertBuilder.setView(input); 

      alertBuilder.setCancelable(false) 
        .setMessage("Please enter verification code from email") 
        .setPositiveButton("Ok", null); 

      alertBuilder.setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int whichButton) { 

          dialog.cancel(); 
         } 
        }); 

      // create alert dialog 
      final AlertDialog alertDialog = alertBuilder.create(); 
      alertDialog.setOnShowListener(new OnShowListener() { 

       @Override 
       public void onShow(DialogInterface arg0) { 
        // TODO Auto-generated method stub 
        Button btn = alertDialog 
          .getButton(AlertDialog.BUTTON_POSITIVE); 

        btn.setOnClickListener(new OnClickListener() { 

         @Override 
         public void onClick(View arg0) { 
          // TODO Auto-generated method stub 

          try { 
           InputMethodManager inputManager = (InputMethodManager) getApplicationContext() 
             .getSystemService(
               Context.INPUT_METHOD_SERVICE); 
           inputManager.hideSoftInputFromWindow(
             input.getWindowToken(), 0); 

           // do your stuff 
          } catch (Exception e) { 
           e.printStackTrace(); 
          } 
         } 
        }); 
       } 
      }); 

      // show it 
      alertDialog.show(); 
0

嘗試在您的產品點擊此代碼:

AlertDialog.Builder dialog = new AlertDialog.Builder(context); 
      dialog.setMessage(context.getResources().getString(R.string.your_message)); 
      dialog.setPositiveButton(context.getResources().getString(R.string.positive_button_string), new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
        //your code 
       } 
      }); 
      dialog.setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
        //your code when cancel is clicked 
       } 
      }); 
      dialog.show(); 
0

原來我過早地在調用finish()函數,它一開始就基本上中止了對話。仍然在我的異步編程的頭上:/