2015-12-03 66 views
2

我下面这个教程:Android Material Design Using Tabs无法解析findViewByID在AppCompatActivity

相关信息:

  • 的Android API等级21
  • 依赖条件被添加到graddle文件 编译“com.android.support: appcompat-v7:23.0.1'和 compile'c​​om.android.support:design:23.0.1' }

“findViewById”方法无法解析。我试图按照这个答案Cannot resolve method 'findViewById(int)' in Fragment,但这个AppCompatActivity使用OnCreateBundle而不是OnCreateView,然后我无法获得视图对象...

这段代码有什么问题?我错过了一些导入?

package info.androidhive.materialtabs.activity; 

import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 

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

import info.androidhive.materialtabs.R; 
import info.androidhive.materialtabs.fragments.OneFragment; 
import info.androidhive.materialtabs.fragments.ThreeFragment; 
import info.androidhive.materialtabs.fragments.TwoFragment; 

public class MainActivity extends AppCompatActivity { 

    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 

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

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFragment(new OneFragment(), "ONE"); 
     adapter.addFragment(new TwoFragment(), "TWO"); 
     adapter.addFragment(new ThreeFragment(), "THREE"); 
     viewPager.setAdapter(adapter); 
    } 

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

     public ViewPagerAdapter(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); 
     } 
    } 
} 

这是“错误”的是Android Studio中显示,但我得到0误差修改在LOGEVENT窗口

"Error"

+0

请张贴错误日志。 –

+0

也许你忘了“android:id =”@ + id/myID“int”activity_main.xml“文件 – MeGoodGuy

+0

@MeGoodGuy是正确的。我自己的AppCompatActivity在onCreateView()方面工作正常,所以你可能忘了”@ + id/yourID“ –

回答

7

你似乎是运行到Android Studio中的腐败缓存错误。

使用自定义命名空间添加自定义视图时,会发生这种情况。如果您添加了任何自定义视图,这可能是您的问题。

要解决:文件>的Invalidate缓存/重启

这应该重新索引一切,并允许自动完成工作,还有,你findViewById()应该工作。我查看了代码并没有看到任何错误。

+0

它没有工作...我的应用程序运行在模拟器上,但没有渲染“预览”窗口 – Rieth

+0

这工作得很好,我已经导入一个来自旧的android studio的项目,并且解决了这个问题 – Manny265

1

AppCompatActivity扩展了FragmentActivity,它扩展了具有findViewById()方法的Activity。

所以它不应该是一个问题得到的方法。

我相信这是IDE错误。 尝试关闭您的IDE并重新打开该项目。 完美地为我工作。

0

尝试所有解决方案后,将您的构建工具版本更新到最新版本27.0.3,这对我来说非常有用。

在应用

- >的build.gradle

buildToolsVersion '27.0.3' 

重建,希望它为你工作太

相关问题