javaandroidpopupwindowmodifiers

Get text from edit text on popup Window


I am try to to use the text entered into an EditText, which that EditText is on a PopupWindow. This is my code for the PopUpWindow.

public void popupInit() {
            View popupView = null;
            popupView = inflater.inflate(R.layout.poplayout, null);

            popUp = new PopupWindow(popupView,             LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
            popUp.setFocusable(true);
            popUp.setOutsideTouchable(isRestricted());
            popUp.setContentView(inflater.inflate(R.layout.poplayout, null, false));
            login = (Button) popupView.findViewById(R.id.loginButton);

        final EditText  username = (EditText) popupView.findViewById(R.id.username);
        final EditText  password = (EditText) popupView.findViewById(R.id.password);
            user_name =username.getText().toString();
            pass_word = password.getText().toString();


        }

when ran, the above code returns "" for both user_name and pass_word, which are field strings.

Thanks.


Solution

  • Here is the piece of working code for you,change accordingly:

    Brief Explanation:

    when btnId is clicked a popup opens and when you enter username and password and click loginbutton, the popup dismisses and username password you entered will be printed in logs. check your LogCat to see what you have entered.

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
             final Button btn = (Button)findViewById(R.id.btnId);
             btn.setOnClickListener(new OnClickListener() {
    
                 @Override
                 public void onClick(View v) {
    
                     LayoutInflater layoutInflater 
                     = (LayoutInflater)getBaseContext()
                      .getSystemService(LAYOUT_INFLATER_SERVICE); 
                     View popupView = layoutInflater.inflate(R.layout.popup, null);  
                   final View  popupView1 = layoutInflater.inflate(R.layout.popup, null);
    
                    final PopupWindow popUp = new PopupWindow(popupView1,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                     popUp.setFocusable(true);
                     popUp.setOutsideTouchable(isRestricted());
                     Button login = (Button) popupView1.findViewById(R.id.loginButton);
                     login.setOnClickListener(new Button.OnClickListener(){
    
             @Override
             public void onClick(View v) {
                 popUp.setContentView(popupView1);
    
    
             final EditText  username = (EditText) popupView1.findViewById(R.id.username);
             final EditText  password = (EditText) popupView1.findViewById(R.id.password);
                 String user_name =username.getText().toString();
                 String pass_word = password.getText().toString();
             Log.i("info",(user_name+pass_word));
              popUp.dismiss();
             }});
    
                     popUp.showAsDropDown(btn, 50, -30);
                     }
    
    
             });
    
        }
    

    To answer your question posted in comments, you should have something like below in your popupInit() method:

    public void popupInit() {
             final LayoutInflater inflater 
             = (LayoutInflater)getBaseContext()
              .getSystemService(LAYOUT_INFLATER_SERVICE); 
           final View popupView = inflater.inflate(R.layout.popup, null);
    
           final PopupWindow popUp = new PopupWindow(popupView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
            popUp.setFocusable(true);
            popUp.setOutsideTouchable(isRestricted());
    
            Button login = (Button) popupView.findViewById(R.id.loginButton);
            login.setOnClickListener(new Button.OnClickListener(){
    
                @Override
                public void onClick(View arg0) {
    
                     popUp.setContentView(inflater.inflate(R.layout.popup, null, false));
                     final EditText  username = (EditText) popupView.findViewById(R.id.username);
                        final EditText  password = (EditText) popupView.findViewById(R.id.password);
                            String user_name =username.getText().toString();
                            String pass_word = password.getText().toString();
                            Log.i("Username,password",(user_name+"-->"+pass_word));
                            popUp.dismiss();
                }
    
            });
             popUp.showAtLocation(popupView, Gravity.CENTER, 0, 0);
        }