【发布时间】:2014-07-22 14:29:20
【问题描述】:
这里有一部分 Activity 会改变屏幕方向:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) findViewById(R.id.editText1);
et.setOnLongClickListener(new View.OnLongClickListener()
{
@Override
public boolean onLongClick(View v)
{
Fragment1 dialogFragment = new Fragment1();
dialogFragment.show(getFragmentManager(), null);
dialogFragment.setTextDialog(et.getText().toString());
return true;
}
});
}
显然,将出现在 DialogFragment 中的对话框似乎应该出现在 editText 上的 onLongClick 之后 (我知道当屏幕方向改变时,Activity 会重新启动,但它不应该像第一次创建时那样正常启动?)
我的问题: 当我至少打开一次对话框并关闭它时,在屏幕方向更改后,我会在屏幕上再次显示对话框,就像我长按 editText 一样。
我完全不知道为什么会这样。
我还附上了对话片段的结构:
public Dialog onCreateDialog(Bundle savedInstanceState)
{
final Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater adbInflater = LayoutInflater.from(getActivity());
View eulaLayout = adbInflater.inflate(R.layout.dialog_crypt, null);
Button btn_OK = (Button) eulaLayout.findViewById(R.id.btnOK);
dialog.setContentView(eulaLayout);
final EditText et = (EditText)eulaLayout.findViewById(R.id.editText2);
et.setText(textDialog);
if(et.length()>0)
{
et.setText(et.getText().toString() + " ");
}
et.setSelection(et.length());
btn_OK.setOnClickListener(
new View.OnClickListener()
{
@Override
public void onClick(View v)
{
textDialog = et.getText().toString();
((Main)getActivity()).setTextOnEditText(textDialog);
dialog.dismiss();
}
});
return dialog;
}
非常感谢您的帮助。
【问题讨论】:
-
所以你开始活动,什么都不做,旋转设备并出现对话框,或者你开始活动,点击edittext,旋转设备......?
-
您确定您的活动正在轮换中重新开始吗?您是否添加了任何可能阻止活动重新启动的代码?像清单中的配置更改?
-
@nikis 不,对不起,如果我在打开对话框之前旋转屏幕,什么都不会发生。
-
@Injhb 我认为已重新启动,但我也尝试将 android:configChanges="orientation" 放入清单但结果相同!
-
@Gasta87 如果您放置 configChanges 并覆盖该方法,那么活动将不会重新启动。这就是我的观点
标签: android screen-orientation android-dialogfragment oncreate