2017-05-15 9 views
0

Ich möchte eine Registerkarte Hintergrundfarbe ausgewählt ändern. Ich möchte eine Farbe auf grünem Hintergrund meine Registerkarte ändern, wenn ausgewählt und verändert einen Farbhintergrund nicht ausgewählten Registerkarte # a8a8a8Java android change color Registerkarte ausgewählt Registerkarte

Aber wenn ich in logs Swipe Ich sehe dies:

Process: pl.smok, PID: 28410 


java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setColorFilter(int, android.graphics.PorterDuff$Mode)' on a null object reference 
                      at pl..smok.ui.activity.MainActivity$2.onTabUnselected(MainActivity.java:163) 
                      at android.support.design.widget.TabLayout.dispatchTabUnselected(TabLayout.java:1163) 
                      at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1149) 
                      at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1124) 
                      at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1419) 
                      at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1524) 
                      at android.view.View$PerformClick.run(View.java:22526) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:158) 
                      at android.app.ActivityThread.main(ActivityThread.java:7224) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

Dieser vollständige Code ist:

public class MainActivity extends AppCompatActivity { 

    @BindView(R.id.view_pager) 
    ViewPager viewPager; 

    @BindView(R.id.tab_layout) 
    TabLayout tabLayout; 

    ActionBar actionBar; 
    SharedPreferences sp; 
    SharedPreferences.Editor editor; 
    int choose; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     sp = getSharedPreferences("pfref", Activity.MODE_PRIVATE); 
     editor = sp.edit(); 
     choose = sp.getInt("screen", 1); 
//  String token = FirebaseInstanceId.getInstance().getToken(); 
//  Log.e("Token: ", token); 
     if(choose == 1) 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     else 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

     setContentView(R.layout.activity_main); 
     ButterKnife.bind(this); 

     actionBar = getSupportActionBar(); 
     hideActionBar(); 

     String[] tabs = {"start", "status", "wiadomości", "nowa wiadomość"}; 
     viewPager.setOffscreenPageLimit(4); 
     viewPager.setAdapter(new PageAdapter(getFragmentManager(), tabs)); 

     viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){ 

      @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      } 

      @Override 
     public void onPageSelected(int position) { 
      CommonUtil.hideKeyboard(MainActivity.this); 
        } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
      } 
      }); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
     tabLayout.setupWithViewPager(viewPager); 


     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Window window = getWindow(); 
      window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
      window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
      window.setStatusBarColor(getResources().getColor(R.color.colorBrown)); 
     } 

     getFragmentManager() 
       .beginTransaction() 
       .add(R.id.top_bar_container, new TopBarFragment(), TopBarFragment.class.getName()) 
       .commit(); 

     processIntent(getIntent()); 
     createTabIcons(); 
     setupTabIcons(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     choose = sp.getInt("screen", 1); 

     if(choose == 1) 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     else 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 

    private void setupTabIcons() { 


//  tabLayout.getTabAt(1).getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN); 

     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
//    tab.getIcon().mutate().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN); 
       Log.e("tab count " , tab.getPosition() + " "); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 
//    tab.getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN); 
      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     App.getBus().register(this); 
     runServices(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     App.getBus().unregister(this); 
    } 

    @Override 
    protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent); 
     processIntent(intent); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    protected void processIntent(Intent intent) { 
     if (intent != null && intent.getIntExtra(Const.KEY_GOTO, 0) == 1 && viewPager != null) { 
      viewPager.setCurrentItem(2); 
     } 
    } 

    @Subscribe 
    public void onPermissionRequestedEvent(PermissionRequestedEvent event) { 
     PermissionUtil.getPermission(this, event.getPermission()); 
    } 

    @Subscribe 
    public void onPermissionGrantedEvent(PermissionGrantedEvent event) { 
     if (event.getPermission().equals(Manifest.permission.ACCESS_FINE_LOCATION)) { 
      runLocationService(); 
     } 
    } 

    @Subscribe 
    public void onPageNavigateEvent(PageNavigateEvent event) { 
     Intent intent; 
     switch (event.getPage()) { 
      case Const.APP_SETTINGS_LOCATION: 
       CommonUtil.hideKeyboard(this); 
       intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
       startActivity(intent); 
       break; 
      case Const.PAGE_START: 
       viewPager.setCurrentItem(0); 
       break; 
      case Const.PAGE_STATUSES: 
       viewPager.setCurrentItem(1); 
       break; 
      case Const.PAGE_MESSAGES: 
       viewPager.setCurrentItem(2); 
       break; 
      case Const.PAGE_SEND_MESSAGE: 
       viewPager.setCurrentItem(3); 
       break; 
      default: break; 
     } 
    } 

    @Subscribe(sticky = true) 
    public void onLoggedOutEvent(LoggedOutEvent event) { 
     String user = Hawk.get(HawkConst.LOGIN_USER); 
     String company = Hawk.get(HawkConst.LOGIN_COMPANY); 
     String password = Hawk.get(HawkConst.LOGIN_PASSWORD); 
     Hawk.clear(); 
     Hawk.put(HawkConst.LOGIN_USER, user); 
     Hawk.put(HawkConst.LOGIN_COMPANY, company); 
     Hawk.put(HawkConst.LOGIN_PASSWORD, password); 
     stopLocationService(); 
     stopTrackerService(); 
     stopConfigService(); 

     FileUtil.clearDirs(); 

     Intent intent = new Intent(MainActivity.this, StartActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(intent); 
     App.getBus().removeStickyEvent(LoggedOutEvent.class); 
    } 

    @Subscribe 
    public void onPhotoRequestedEvent(PhotoRequestedEvent event) { 
     Intent intent; 
     switch (event.getRequestCode()) { 
      case Const.PHOTO_GALLERY: 
       intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 
       intent.addCategory(Intent.CATEGORY_OPENABLE); 
       startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.choose_image_title)), event.getRequestCode()); 
       break; 
      case Const.PHOTO_CAMERA: 
       intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, FileUtil.getOutputTempUri("images")); 
       startActivityForResult(intent, event.getRequestCode()); 
       break; 
      default: break; 
     } 
    } 

    @Subscribe 
    public void onFileViewRequestEvent(FileViewRequestEvent event) { 
     File file = FileUtil.getFile(event.getEvent().getId()); 
     if (file == null) { 
      Toast.makeText(this, getResources().getString(R.string.file_not_exists), Toast.LENGTH_LONG).show(); 
     } else { 
      Uri uri = Uri.fromFile(file); 
      Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
      try { 
       String type = FileUtil.getMimeType(file.getPath()); 
       intent.setDataAndType(uri, type); 
       startActivity(intent); 
       App.getBus().post(new FileViewedEvent(event.getEvent())); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       try { 
        intent.setDataAndType(uri, "*/*"); 
        startActivity(intent); 
        App.getBus().post(new FileViewedEvent(event.getEvent())); 
       } catch (Exception ee) { 
        ee.printStackTrace(); 
        Toast.makeText(this, getResources().getString(R.string.no_file_app), Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 
    } 

    @Subscribe 
    public void onHideKeyboardEvent() { 
     CommonUtil.hideKeyboard(this); 
      } 

    @Subscribe 
    public void onMoveAppBackgroundEvent(MoveAppBackgroundEvent event) { 
     moveTaskToBack(true); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == Activity.RESULT_OK) { 
      switch (requestCode) { 
       case Const.PHOTO_GALLERY: 
        App.getBus().postSticky(new PhotoSelectedEvent(data.getData())); break; 
       case Const.PHOTO_CAMERA: 
        Uri uri = FileUtil.renameFile(App.getConfigRepository().getPhotoMaxWidth()); 
        App.getBus().postSticky(new PhotoSelectedEvent(uri)); break; 
       default: break; 
      } 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     switch (requestCode) { 
      case Const.PERMISSIONS_REQUEST_LOCATION: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        App.getBus().post(new PermissionGrantedEvent(Manifest.permission.ACCESS_FINE_LOCATION)); 
       } 
       break; 
      default: 
       break; 
     } 
    } 

    protected void runServices() { 
     if (LocationUtil.isLocationEnabled(getBaseContext())) { 
      if (checkPermission()) { 
       runLocationService(); 
      } 
     } else { 
      AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
      dialog.setMessage(getResources().getString(R.string.location_settings_disabled)); 
      dialog.setPositiveButton(getString(R.string.go_to_location_settings), new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
        App.getBus().post(new PageNavigateEvent(Const.APP_SETTINGS_LOCATION)); 
       } 
      }); 
      dialog.setNegativeButton(getResources().getString(R.string.cancel), new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
        finish(); 
       } 
      }); 
      dialog.show(); 
     } 
     runTrackerService(); 
     runConfigService(); 
    } 

    protected void runLocationService() { 
     startService(new Intent(this, LocationService.class)); 
    } 

    protected void stopLocationService() { 
     stopService(new Intent(this, LocationService.class)); 
    } 

    protected void runTrackerService() { 
     startService(new Intent(this, TrackerService.class)); 
    } 

    protected void stopTrackerService() { 
     stopService(new Intent(this, TrackerService.class)); 
    } 

    protected void runConfigService() { 
     startService(new Intent(this, ConfigService.class)); 
    } 

    protected void stopConfigService() { 
     stopService(new Intent(this, ConfigService.class)); 
    } 

    protected boolean checkPermission() { 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      App.getBus().post(new PermissionRequestedEvent(Manifest.permission.ACCESS_FINE_LOCATION)); 

      return false; 
     } 

     return true; 
    } 

    protected void hideActionBar() { 
     if (actionBar != null) { 
      actionBar.hide(); 
     } 
    } 

    private void createTabIcons(){ 
    } 
} 

Und das ist XML-Code für diese Aktivität. activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#fff" 
    tools:context="pl.eltegps.smokkomunikator.ui.activity.MainActivity"> 

    <FrameLayout 
     android:id="@+id/top_bar_container" 
     android:layout_width="match_parent" 
     android:layout_height="70dp" /> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/top_bar_container"> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:paddingTop="?attr/actionBarSize"> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/view_pager" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:paddingBottom="@dimen/activity_vertical_margin" 
       android:paddingLeft="@dimen/activity_vertical_margin" 
       android:paddingRight="@dimen/activity_vertical_margin" 
       android:paddingTop="@dimen/activity_vertical_margin" /> 
     </LinearLayout> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:layout_gravity="center_horizontal" 
      android:minHeight="?attr/actionBarSize" 
      android:paddingTop="@dimen/activity_vertical_margin" 
      app:tabGravity="center" 
      app:tabIndicatorColor="#fff" 
      app:tabMode="scrollable" 
      app:tabTextAppearance="@style/MyCustomTextAppearance" /> 

    </RelativeLayout> 

</RelativeLayout> 
+0

@IntelliJAmiya ich einen Code geändert und setzen, was Sie wriete aber die ganze Zeit sehe ich einen Fehler –

+0

@IntelliJAmiya jetzt sehe ich diese: java.lang.NullPointerException: der Versuch, virtuelle Methode aufzurufen ‚android.gr aphics.drawable.Drawable.mutate() ' –

+0

hier den vollständigen Code hier eingeben –

Antwort

0

Hallo können Sie diese Farbe in xml gesetzt keine Notwendigkeit, nur in Code zu schreiben

<android.support.design.widget.TabLayout 
    android:id="@+id/tab_layout" 
    android:layout_width="match_parent" 
    android:layout_height="35dp" 
    app:tabSelectedTextColor="@color/colorSplashBackground" 
    app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget" 
    app:tabTextColor="@color/colorBottomLine"> 

</android.support.design.widget.TabLayout> 

dies die xml der Registerkarte Layout sein wird, und Sie haben Ihre Farbe in Zeile

passieren
app:tabSelectedTextColor="@color/colorSplashBackground" 
Verwandte Themen