2017-01-27 88 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);