2017-01-27 20 views
2

我正在开发一个android项目,在这一点上,我想要这种'fab'以onclick的方式,它带有一个带有文本输入的弹出窗口。和两个按钮。 但它带来了我试图修复的错误,最后我以为我可以在这里找到帮助。显示期间出现Android AlertDialog错误

此行有一个错误:

AlertDialog.Builder builder = new AlertDialog.Builder(this); with this one too: final EditText input = new EditText(this);

private String m_Text = ""; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("QuickSearch:"); 
      //input initial 
      final EditText input = new EditText(this); 
      // 
      input.setInputType(InputType.TYPE_CLASS_TEXT); 
      builder.setView(input); 
      // Set of buttons to be displayed. 
      builder.setPositiveButton("Go", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        m_Text = input.getText().toString(); 
       } 
      }); 
      builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }); 

      builder.show(); 


      //Search action here. 
      //Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        // .setAction("Action", null).show(); 
     } 
    }); 
+2

你试过AlertDialog.Builder建设者=新AlertDialog.Builder(yourActivity.this); –

+0

上传日志? –

回答

0

您在每次点击按钮创建新实例Alertdialog ..无需拆卸视图

试试这个:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    final AlertDialog alert = builder.create(); 


    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


      builder.setTitle("QuickSearch:"); 
      //input initial 
      final EditText input = new EditText(MainActivity.this); 
      // 
      input.setInputType(InputType.TYPE_CLASS_TEXT); 
      builder.setView(input); 
      // Set of buttons to be displayed. 
      builder.setPositiveButton("Go", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        m_Text = input.getText().toString(); 
       } 
      }); 
      builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        alert.dismiss(); 
       } 
      }); 

      alert.show(); 


      //Search action here. 
      //Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        // .setAction("Action", null).show(); 
     } 
    }); 
+0

@KE Keronei是否有效? – rafsanahmad007

+0

是的,谢谢。有效。 –

0

在您的代码this指的是onClick不是context of that Activity

代码应该是这样的

AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this); 
final EditText input = new EditText(YourActivityName.this);