2017-01-25 7 views
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機能はすべてこれが起こる理由を私は知らないなくなって。私はフラグメントを持っている場合、デバイスの回転をどのように処理するかを尋ねたい。助けてください...

答えて

0

ランドスケープモードの場合複数の画面をサポートするために複数のレイアウトを作成する必要があります。小さな画面サイズの通常の画面サイズ( "デフォルト")

RES /レイアウト小/ my_layout.xml //レイアウト

RES /レイアウト/ my_layout.xml //レイアウト

RES /レイアウト特大画面サイズの大画面サイズの-large/my_layout.xml //レイアウト

のres /レイアウト-XLARGE/my_layout.xml //レイアウト

のres /レイアウトXLARGE-ランド/ my_layout.xml /余分な横向きのレイアウト/レイアウト

+0

これはどのようにして質問に答えますか? – AnixPasBesoin

+0

ボタンが画面の最後に表示される可能性があるので、回転させると消えてしまう可能性がありますが、別のレイアウト画面を使用していると表示されることがあります – sangavi

関連する問題