简体   繁体   English

无法在AppCompatActivity中解析findViewByID

[英]Cannot resolve findViewByID in AppCompatActivity

I'm following this tutorial: Android Material Design Using Tabs 我正在学习本教程: 使用标签的Android Material Design

Infos: 相关信息:

  • Android API Level 21 Android API等级21
  • Dependecies are added to graddle file compile 'com.android.support:appcompat-v7:23.0.1' and compile 'com.android.support:design:23.0.1' } 依赖性被添加到graddle文件编译'com.android.support:appcompat-v7:23.0.1'并编译'com.android.support:design:23.0.1'}

The method "findViewById" cannot be resolved. 无法解析方法“findViewById”。 I tried to follow this answer Cannot resolve method 'findViewById(int)' in Fragment , but this AppCompatActivity use OnCreateBundle instead OnCreateView, then i can't get the View object... 我试着按照这个答案无法在Fragment中解析方法'findViewById(int)' ,但是这个AppCompatActivity使用OnCreateBundle而不是OnCreateView,那么我无法获取View对象...

What is wrong with this code ? 这段代码有什么问题? I'm missing some import? 我错过了一些进口?

    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);
        }
    }
}

This is the "Error" that Android Studio show but i got 0 erros in logevent window 这是Android Studio显示的“错误”,但我在logevent窗口中获得了0个错误

“错误”

You appear to be running into the corrupt cache bug in Android Studio. 您似乎遇到了Android Studio中的损坏缓存错误。

This happens to me a LOT when adding custom views with a custom namespace. 在使用自定义命名空间添加自定义视图时,这种情况发生了很多。 If you added any custom views, this could be your issue. 如果您添加了任何自定义视图,则可能是您的问题。

To fix: File > Invalidate Caches / Restart 要修复:文件>使高速缓存/重新启动无效

That should reindex everything and allow for auto-completion to work, as well, your findViewById() should work. 这应该重新索引所有内容并允许自动完成工作,同样,findViewById()应该工作。 I reviewed the code and do not see any errors. 我查看了代码,没有看到任何错误。

AppCompatActivity extends FragmentActivity which extends Activity which has findViewById() method. AppCompatActivity扩展了FragmentActivity,它扩展了具有findViewById()方法的Activity。

So it shouldn't be a problem to get the method. 所以获得该方法应该不是问题。

I believe it's IDE bug. 我相信这是IDE的错误。 Try to close your IDE and reopen the project. 尝试关闭IDE并重新打开项目。 Worked for me, perfectly. 完美地为我工作。

Update your build tools version to the latest 27.0.3, after trying all solutions this is what worked for me. 在尝试所有解决方案之后,将构建工具版本更新到最新的27.0.3,这对我有用。

in app -> build.gradle 在app - > build.gradle中

buildToolsVersion '27.0.3'

rebuild and hope it works for you too 重建并希望它也适合你

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM