2017-05-02 57 views
-3

我很難讓AlertDialog顯示出來。當用戶點擊textView時,alertdialog應該顯示帶有顯示textView內容的editText。一旦按下保存按鈕,文本視圖就會顯示editText的內容。Android AlertDialog沒有顯示

import android.content.DialogInterface; 
import android.content.Intent; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

public class EditProfile extends AppCompatActivity { 

    final DBHandler handler = new DBHandler(this); 
    TextView tvPassword; 
    EditText etPassword; 
    String username; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_edit_profile); 

     //Get username passed down from loginActivity 
     Intent intent = getIntent(); 
     username = intent.getStringExtra("username"); 
     User user = new User(); 
     user = handler.getUser(username); //get user using username 


     //Reference textviews with findviews 
     tvPassword = (TextView) findViewById(R.id.tvPassword); 


     //SetText textviews 
     tvPassword.setText(user.getPassword()); 


     //Create alert dialogs 
     AlertDialog dPassword = new AlertDialog.Builder(this).create(); 


     //Create editTexts to place inside dialog 
     etPassword = new EditText(this); 


     //Set layout for dialog 
     dPassword.setView(etPassword); 


     //on clicking textbox, let user edit contents 
     //***PASSWORD*** 
     dPassword.setButton(DialogInterface.BUTTON_POSITIVE, "SAVE", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       tvPassword.setText(etPassword.getText()); 
      } 
     }); 

     tvPassword.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       etPassword.setText(tvPassword.getText()); 
      } 
     }); 


     //NOW UPDATE DB 
     handler.updateUser(username, tvEmail.getText().toString(), tvPassword.getText().toString()); 

    } 
} 
+1

你不在'AlertDialog'的任何地方調用'show()'。 –

回答

0

你需要顯示對話框,調用dpassword.show();方法。

import android.content.DialogInterface; 
import android.content.Intent; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

public class EditProfile extends AppCompatActivity { 

    final DBHandler handler = new DBHandler(this); 
    TextView tvPassword; 
    EditText etPassword; 
    String username; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_edit_profile); 

     //Get username passed down from loginActivity 
     Intent intent = getIntent(); 
     username = intent.getStringExtra("username"); 
     User user = new User(); 
     user = handler.getUser(username); //get user using username 


     //Reference textviews with findviews 
     tvPassword = (TextView) findViewById(R.id.tvPassword); 


     //SetText textviews 
     tvPassword.setText(user.getPassword()); 


     //Create alert dialogs 
     AlertDialog dPassword = new AlertDialog.Builder(this).create(); 


     //Create editTexts to place inside dialog 
     etPassword = new EditText(this); 


     //Set layout for dialog 
     dPassword.setView(etPassword); 


     //on clicking textbox, let user edit contents 
     //***PASSWORD*** 
     dPassword.setButton(DialogInterface.BUTTON_POSITIVE, "SAVE", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       tvPassword.setText(etPassword.getText()); 
      } 
     }); 
dpassword.show(); 
     tvPassword.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       etPassword.setText(tvPassword.getText()); 
      } 
     }); 


     //NOW UPDATE DB 
     handler.updateUser(username, tvEmail.getText().toString(), tvPassword.getText().toString()); 

    } 
} 
+0

非常感謝你,不能相信我錯過了這麼愚蠢的事情。 – Sakizzle

+0

@Sakizzle請接受我的回答 –