私の問題は、ポップアップ ウィンドウが閉じたときに編集テキストの入力を保存しないポップアップ ウィンドウがあることです。期待される結果: 私が望むのは、ポップアップが閉じたときに、何らかの理由でポップアップを再度開く必要がある場合、配置した値を確認したいということです。アクティビティのライフ サイクルと 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(); }});
}
}