0
だから私はこのようなコードを持っている:アンドロイドonConfigChangeエラー
private Toolbar toolbar;
private MaterialSearchView searchView;
private ImageView drawer,back;
private SlidingUpPanelLayout slidingLayout;
private ImageView btnHome,btnProfile,btnPromo,btnLogout;
Bundle bundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initToolbar();
init();
searchView();
setHome();
setDrawer();
btnHome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setHome();
}
});
btnProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setProfile();
}
});
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDialogLogout();
}
});
}
public void init() {
searchView = (MaterialSearchView) findViewById(R.id.search_view);
drawer = (ImageView)findViewById(R.id.drawer);
back = (ImageView)findViewById(R.id.back);
slidingLayout =(SlidingUpPanelLayout)findViewById(R.id.sliding_layout);
slidingLayout.addPanelSlideListener(onSlideListener());
slidingLayout.setParallaxOffset(80);
btnHome = (ImageView)findViewById(R.id.btnHome);
btnProfile = (ImageView)findViewById(R.id.btnProfile);
btnPromo = (ImageView)findViewById(R.id.btnProfile);
btnLogout = (ImageView)findViewById(R.id.btnExit);
}
public void drawerVisible(){
drawer.setVisibility(View.VISIBLE);
back.setVisibility(View.GONE);
}
public void searchView(){
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));
return false;
}
});
}
public void drawerChangeToBack(){
drawer.setVisibility(View.GONE);
back.setVisibility(View.VISIBLE);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
public void initToolbar() {
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
public void setDrawer(){
drawer.setVisibility(View.VISIBLE);
back.setVisibility(View.GONE);
drawer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFilter();
}
});
}
public void setFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.nav_contentframe, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
ft.commit();
}
private void setHome() {
Fragment fragment = new HomeFragment();
setFragment(fragment);
}
private void setProfile() {
Fragment fragment = new ProfileFragment();
setFragment(fragment);
}
private void setAdvancedSearch() {
Fragment fragment = new AdvancedSearchFragment();
setFragment(fragment);
}
private void setFilter(){
Fragment fragment = new FilterFragment();
setFragment(fragment);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MaterialSearchView.REQUEST_VOICE && resultCode == RESULT_OK) {
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if (matches != null && matches.size() > 0) {
String searchWrd = matches.get(0);
if (!TextUtils.isEmpty(searchWrd)) {
searchView.setQuery(searchWrd, false);
}
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
public static void setSelected(int selected) { }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem item = menu.findItem(R.id.action_search).setIcon(resizeImage(R.drawable.search_ic,200,200));
searchView.setMenuItem(item);
searchView.setBackgroundColor(Color.parseColor("#5874e8"));
searchView.setTextColor(Color.WHITE);
searchView.setHintTextColor(Color.WHITE);
MenuItem itemAdvanced = menu.findItem(R.id.action_advanced_search).setIcon(resizeImage(R.drawable.blue_dot,50,200));
itemAdvanced.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
setAdvancedSearch();
return true;
}
});
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
return super.onOptionsItemSelected(item);
}
public void openDialogLogout() {
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Are you sure to logout?");
alertDialogBuilder.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Intent a = new Intent(MainActivity.this, LoginActivity.class);
startActivity(a);
}
});
alertDialogBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//do nothing
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
@Override
public void onBackPressed() {
setHome();
}
private Drawable resizeImage(int resId, int w, int h)
{
// load the origial Bitmap
Bitmap BitmapOrg = BitmapFactory.decodeResource(getResources(), resId);
int width = BitmapOrg.getWidth();
int height = BitmapOrg.getHeight();
int newWidth = w;
int newHeight = h;
// calculate the scale
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// create a matrix for the manipulation
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0,width, height, matrix, true);
return new BitmapDrawable(resizedBitmap);
}
private SlidingUpPanelLayout.PanelSlideListener onSlideListener() {
return new SlidingUpPanelLayout.PanelSlideListener() {
@Override
public void onPanelSlide(View view, float v) { }
@Override
public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) { }
};
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setHome();
if((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_NORMAL) {
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
return;
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
return;
}
}
}
私は私のデバイスの私を回転させる場合は、すべてのFragment
とBTN機能はすべてこれが起こる理由を私は知らないなくなって。私はフラグメントを持っている場合、デバイスの回転をどのように処理するかを尋ねたい。助けてください...
これはどのようにして質問に答えますか? – AnixPasBesoin
ボタンが画面の最後に表示される可能性があるので、回転させると消えてしまう可能性がありますが、別のレイアウト画面を使用していると表示されることがあります – sangavi