0

私の問題は、ポップアップ ウィンドウが閉じたときに編集テキストの入力を保存しないポップアップ ウィンドウがあることです。期待される結果: 私が望むのは、ポップアップが閉じたときに、何らかの理由でポップアップを再度開く必要がある場合、配置した値を確認したいということです。アクティビティのライフ サイクルと onSaveInsanceState メソッドをいじってみましたが、問題は解決していないようです。なんらかの理由で、ポップアップ ウィンドウには独自の LIFE があります。基本的に毎回新しい popUp インスタンスを作成します。

            public class MainActivity extends Activity {
                 private Point p;
                 private Button b;
                 private TextView tv;
                 private PopupWindow popup;
                 private LayoutInflater layoutInflater;
                 private View layout;
                 private LinearLayout viewGroup;
                 private EditText etext;
           //on create method
                  @Override
             protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
            mainViewItems();
            onPause();
         }
              //allows me to pause session
                  @Override
              protected void onPause(){
        super.onPause();
            mainViewItems();

               }

                  // This method is in charge of instantiating the          
                 // buttons,textviews,  and allowing an event handler to 
                 // call     
                showPopup() method.
               public void mainViewItems(){
           b= (Button) findViewById(R.id.button1);
           tv = (TextView) findViewById(R.id.textView1);
                   b.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0) {   
                     showPopup(MainActivity.this,p);}});

                }

         @Override
        public void onWindowFocusChanged(boolean hasFocus) {

       int[] location = new int[2];
       b.getLocationOnScreen(location);
       //Initialize the Point with x, and y positions
       p = new Point();
       p.x = location[0];
       p.y = location[1];

    }






    // The method that displays the popup.
    private void showPopup(final Activity context,Point p) {
       int popupWidth = 230;
       int popupHeight = 190;

       // Inflate the popup_layout.xml
     viewGroup = (LinearLayout) context.findViewById(R.id.pop);
     layoutInflater = (LayoutInflater)  
                    context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

     layout = layoutInflater.inflate(R.layout.popup_layout, 
                                                                viewGroup);

     // Creating the PopupWindow
       popup = new PopupWindow(layout,350,350,  true); //context
       popup.setContentView(layout);//layout
       popup.setWidth(popupWidth);
       popup.setHeight(popupHeight);
       popup.setFocusable(true);
       popup.setTouchable(true);
       popup.setOutsideTouchable(false);
       popup.update();


      int OFFSET_X = -100;
      int OFFSET_Y = 100;


       // Displaying the popup at the specified location, + offsets.
         popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x +    
                                OFFSET_X, p.y + OFFSET_Y);

      etext = (EditText) layout.findViewById(R.id.editText1);
      Button  b2 = (Button) layout.findViewById(R.id.calculate);

       b2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v)    
                     {tv.setText(etext.getText().toString());}});
       Button close = (Button) layout.findViewById(R.id.close);


            close.setOnClickListener(new OnClickListener() {

           @Override
           public void onClick(View v) { popup.dismiss(); }});

                  }


                      }
4

1 に答える 1

0

表示するたびに新しい PopupWindow を作成しています。他に何を期待しますか-新しいEditTextを備えた新しいウィンドウです。これを修正する最も簡単な方法は、最後に入力された文字列をアクティビティのメンバー変数に保存し、ポップアップを表示するときに編集テキストをこの変数に設定することです。

于 2013-05-16T06:13:34.277 に答える