2016-06-10 58 views
0

我有一些建立在Eclipse Android應用程序,現在我開始使用Android Studio的發展Android的材料設計上Android Studio中

我必須遵循這個Build a Material Design App Tutorial

我成功運行本教程中的新項目在Android Studio中使用的進口,並在裝置作品完美

所以,我重新安裝最新的Android工作室,下載最新的SDK還

現在,我要實現它在我的應用程序

步驟,我已經試過

  1. 創建新項目

  2. 副本教程的所有活動,我的應用程序

  3. 副本教程的所有其他文件夾,我的應用程序

  4. 複製Android清單教程中的應用程序設置到我的應用程序

  5. 副本的build.gradle(模塊的應用程序)的教程,我的應用程序

但它顯示的錯誤,然後我開始跟蹤哪些問題,並發現了一些

import android.os.Bundle; 
    import android.support.design.widget.FloatingActionButton; 
    import android.support.design.widget.NavigationView; 
    import android.support.design.widget.Snackbar; 
    import android.support.design.widget.TabLayout; 
    import android.support.graphics.drawable.VectorDrawableCompat; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentManager; 
    import android.support.v4.app.FragmentPagerAdapter; 
    import android.support.v4.content.res.ResourcesCompat; 
    import android.support.v4.view.GravityCompat; 
    import android.support.v4.view.ViewPager; 
    import android.support.v4.widget.DrawerLayout; 
    import android.support.v7.app.ActionBar; 
    import android.support.v7.app.AppCompatActivity; 
    import android.support.v7.widget.Toolbar; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 

    import java.util.ArrayList; 
    import java.util.List; 


    /** 
    * Provides UI for the main screen. 
    */ 
    public class MainActivity extends AppCompatActivity { 

     private DrawerLayout mDrawerLayout; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      // Adding Toolbar to Main screen 
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(toolbar); 
      // Setting ViewPager for each Tabs 
      ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
      setupViewPager(viewPager); 
      // Set Tabs inside Toolbar 
      TabLayout tabs = (TabLayout) findViewById(R.id.tabs); 
      tabs.setupWithViewPager(viewPager); 


      // Create Navigation drawer and inlfate layout 
      NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer); 
      // Adding menu icon to Toolbar 
      ActionBar supportActionBar = getSupportActionBar(); 

      if (supportActionBar != null) { 

       // Start from this line, if I leave it uncommented, it will make the app crash 

       //VectorDrawableCompat indicator 
       //  = VectorDrawableCompat.create(getResources(), R.drawable.ic_menu, getTheme()); 
       //indicator.setTint(ResourcesCompat.getColor(getResources(),R.color.white,getTheme())); 
       //supportActionBar.setHomeAsUpIndicator(indicator); 
       //supportActionBar.setDisplayHomeAsUpEnabled(true); 
      } 



      // Set behavior of Navigation drawer 
      navigationView.setNavigationItemSelectedListener(
        new NavigationView.OnNavigationItemSelectedListener() { 
         // This method will trigger on item Click of navigation menu 
         @Override 
         public boolean onNavigationItemSelected(MenuItem menuItem) { 
          // Set item in checked state 
          menuItem.setChecked(true); 

          // TODO: handle navigation 

          // Closing drawer on item click 
          mDrawerLayout.closeDrawers(); 
          return true; 
         } 
        }); 
      // Adding Floating Action Button to bottom right of main view 
      FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
      fab.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Snackbar.make(v, "Hello Snackbar!", 
          Snackbar.LENGTH_LONG).show(); 
       } 
      });    
     } 


     // Add Fragments to Tabs 
     private void setupViewPager(ViewPager viewPager) { 
      Adapter adapter = new Adapter(getSupportFragmentManager()); 
      adapter.addFragment(new ListContentFragment(), "List"); 
      adapter.addFragment(new TileContentFragment(), "Tile"); 
      adapter.addFragment(new CardContentFragment(), "Card"); 
      viewPager.setAdapter(adapter); 
     } 

     static class Adapter extends FragmentPagerAdapter { 
      private final List<Fragment> mFragmentList = new ArrayList<>(); 
      private final List<String> mFragmentTitleList = new ArrayList<>(); 

      public Adapter(FragmentManager manager) { 
       super(manager); 
      } 

      @Override 
      public Fragment getItem(int position) { 
       return mFragmentList.get(position); 
      } 

      @Override 
      public int getCount() { 
       return mFragmentList.size(); 
      } 

      public void addFragment(Fragment fragment, String title) { 
       mFragmentList.add(fragment); 
       mFragmentTitleList.add(title); 
      } 

      @Override 
      public CharSequence getPageTitle(int position) { 
       return mFragmentTitleList.get(position); 
      } 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.menu_main, menu); 
      return true; 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      // Handle action bar item clicks here. The action bar will 
      // automatically handle clicks on the Home/Up button, so long 
      // as you specify a parent activity in AndroidManifest.xml. 
      int id = item.getItemId(); 
      //noinspection SimplifiableIfStatement 
      if (id == R.id.action_settings) { 
       return true; 
      } else if (id == android.R.id.home) { 
       mDrawerLayout.openDrawer(GravityCompat.START); 
      } 
      return super.onOptionsItemSelected(item); 
     } 

    } 

我評論一些片的上述源代碼的代碼,以及應用程序工作良好的裝置

如果我激活代碼,錯誤會顯示這樣

E/AndroidRuntime: FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{package.name.MainActivity}: android.content.res.Resources$NotFoundException: File res/drawable-mdpi-v4/ic_menu.png from xml type xml resource ID #0x7f02005e 

,這使得該問題的代碼,從這個

**//VectorDrawableCompat indicator 
    // = VectorDrawableCompat.create(getResources(), R.drawable.ic_menu, getTheme());** 

開始,如果我離開它註釋掉,就會使應用程序崩潰

到目前爲止,NavigationView,FloatingActionButton等效果很好

那麼,VectorDrawableCompat有什麼問題,以及如何解決它?

由於之前

+0

你有最新的SDK安裝? –

+0

從'folder'中刪除'Drawable'。 –

+1

我認爲當你創建一個新的項目時,AS會創建mipmap文件夾而不是可繪製的文件夾。如果是這樣的話,將'R.drawable.ic_menu'改爲'R.mipmap.ic_menu' – NSimon

回答

0

安裝Android 5.0 SDK的SDK平臺,然後更新您的支持庫和支持庫,以通過SDK-管理器的最新版本。

看看這個鏈接,創建材料的應用

http://developer.android.com/training/material/index.html

隨着支持庫,你可以像舊設備提供類似的行爲:

使用UI部件的材質主題 子集像 EditText 微調框 RadioButton 也看看android設計支持庫。

的更多信息: 更可以在這裏找到庫

https://android-arsenal.com/

+0

它是用於日食? – keronconk

+0

對於日食嘗試這個。 –

+0

我在Android Studio上遇到了這個問題,但是感謝您的評論 – keronconk

0

答案很簡單,問題是主題

VectorDrawableCompat indicator = VectorDrawableCompat.create(getResources(), R.drawable.ic_menu, null); 
    indicator.setTint(ResourcesCompat.getColor(getResources(),R.color.white, null)); 
    supportActionBar.setHomeAsUpIndicator(indicator); 
    supportActionBar.setDisplayHomeAsUpEnabled(true); 

我設置主題,空值和現在的作品