使用Fragment来管理界面并在回调中处理点击事件
示例代码:
public class MyFragment extends Fragment { private Button myButton;
public MyFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_my, container, false);
myButton = view.findViewById(R.id.my_button);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//处理点击事件
}
});
return view;
}
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new MyFragment())
.commit();
}
}
}
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig);
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, new MyFragment())
.commit();
}
这样,在设备旋转时,Fragment将会被销毁并重新创建,点击事件也会被正确处理。