2015-11-04 90 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()函数,它一开始就基本上中止了对话。仍然在我的异步编程的头上:/

相关问题