Не удается разрешить метод ' findViewById (int)'
у меня проблемы с findViewByid но я не могу найти где проблема.
вот мой FirstFragment код:
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import java.util.ArrayList;
import java.util.List;
public class FirstFragment extends Fragment {
public static final String TAG = "first";
private WebView mWebView;
ProgressBar progressBar;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mWebView = (WebView) findViewById(R.id.activity_main_webview);
    progressBar = (ProgressBar) findViewById(R.id.progressBar1);
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mWebView.loadUrl("http://www.google.com");
 }
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.secondefragment, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
 }
}
8 ответов
вам нужно сделать это в onCreateView:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle   savedInstanceState) {
   View view =  inflater.inflate(R.layout.secondefragment, container, false);
    mWebView = (WebView) view.findViewById(R.id.activity_main_webview);
   progressBar = (ProgressBar) view.findViewById(R.id.progressBar1);
   WebSettings webSettings = mWebView.getSettings();
   webSettings.setJavaScriptEnabled(true);
   mWebView.loadUrl("http://www.google.com");
   return view;
}
Fragment не даетfindViewById() метод.  Это предусмотрено в Activity или View.  При реализации Fragment вы не раздуваете свои взгляды в onCreate() (как вы обычно делаете в Activity.) Вместо этого вы делаете это в onCreateView() и вам нужно использовать надутый корень View чтобы найти идентификатор в макете, который вы надули.
getActivity().findViewById() строительство. Однако это не очень хорошая практика, потому что фрагмент может быть повторно в другом виде деятельности.
рекомендуемый способ для этого-определить интерфейс.
- 
интерфейс должен содержать методы, с помощью которых фрагмент должен взаимодействовать с родительской деятельности. public interface MyInterfcae { void showTextView(); }
- 
тогда ваша деятельность реализует это Взаимодействие. public class MyActivity extends Activity implements MyInterfcae { @Override public void showTextView(){ findViewById(R.id.textview).setVisibility(View.VISIBLE); } }
- 
в этом фрагменте получаем ссылку на интерфейс. MyInterface mif = (MyInterface) getActivity();
- 
вызов метода. mif.showTextView();
я встречаю тот же вопрос в Android studio learning, просто потому, что я создаю проект по Fragment. Выберите Blank Activity С Fragment будет решить.
у меня была эта проблема, когда я загрузил образец проекта из github. Этот проект имел
compileSdkVersion 23
buildToolsVersion "23.0.0"
targetSdkVersion 23
в деятельности context и findViewById() были в красном цвете внутри метода onCreate (). Поэтому я обновил вышеуказанные версии до 
compileSdkVersion 25
buildToolsVersion "25.0.3"
targetSdkVersion 25
и ошибки устранены.
Это, как вы можете решить проблему:
toggleButton1=(ToggleButton)findViewById(R.id.toggleButton1);  
toggleButton2=(ToggleButton)findViewById(R.id.toggleButton2); 
