[英]webView cannot be resolved & cannot make a static reference to the non-static method findViewById(int) from the type Activity
[英]Cannot make a static reference to the non-static method findViewById(int) from the type View
我在代碼行中收到以下錯誤:
無法從類型View中靜態引用非靜態方法findViewById(int)
mspinner = (Spinner) View.findViewById(R.id.spinnervdc);
在代碼行中還有以下錯誤
構造函數ArrayAdapter(ListViewFragment,int,String [])未定義
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,name);
我的MainActivity是
package com.yogeshojha.nagariksahayata;
import java.util.ArrayList;
import java.util.List;
import com.yogeshojha.nagariksahayata.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.app.Activity;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class ListViewFragment extends Fragment implements OnItemSelectedListener{
public ListViewFragment(){}
Spinner mspinner; //declare spinner globally
ArrayAdapter<String> adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_listview, container, false);
mspinner = (Spinner) View.findViewById(R.id.spinnervdc);
//set adapter for spinner here
String [] name = {"A","B","C"};
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,name);
// you can use getActivity() or this
mspinner.setAdapter(adapter);
return rootView;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
//do something when particular item is selected from spinner
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
}
您不應該使用View。 而是使用rootView。
mSpinner = (Spinner) rootView.findViewById(R.id.spinnervdc);
更新資料
您的類擴展了Fragment類,而不是Activity類。 因此,當您使用this時 ,它將導致您提到的第二個錯誤。
您需要將活動作為參數提供給arrayadapter構造函數; 正如Raghunandan所建議的那樣。
adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,name);
更新2
這可能會對其他遇到類似錯誤的人有所幫助。 除了查看類引用之外,您不能從其他任何事情中受益更多。
這里, 在文檔中,它說第一個參數必須是一個Context。 您的方式未包含在構造函數的任何重載版本中。 這就是為什么您會收到未定義的構造函數錯誤的原因。
嘗試這種方式
mspinner = (Spinner) rootView.findViewById(R.id.spinnervdc);
代替
mspinner = (Spinner) View.findViewById(R.id.spinnervdc);
Spinner
來自rootView layout
,因此您需要使用該特定布局進行初始化。
而且你應該改變這個
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,name);
與
adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,name);
除了已經建議的答案
mspinner= (Spinner)rootView.findViewById(R.id.spinnervdc);
如錯誤所說
構造函數ArrayAdapter(ListViewFragment,int,String [])未定義
this
是指ListViewFragment
,它擴展了Fragment
。 您需要一個有效的上下文。 因此,請使用getActivity()
。
這個
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,name);
應該
adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,name);
你正在反感
View **rootView** = inflater.inflate(R.layout.fragment_listview, container, false);
您必須像下面一樣訪問此參考文獻上的小部件。
mspinner = (Spinner) rootView .findViewById(R.id.spinnervdc);
您應該更改:
adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,name);
至
adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,name);
嘗試這個,
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_listview, container, false);
mspinner = (Spinner) rootView.findViewById(R.id.spinnervdc);
//set adapter for spinner here
String [] name = {"A","B","C"};
adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,name);
mspinner.setAdapter(adapter);
return rootView;
}
findViewByID()不是靜態方法,因此您不能像這樣嘗試調用它
mSpinner = (Spinner) rootView.findViewById(R.id.spinnervdc);
並為此adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,name);
試試這個adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item,name);
希望這會起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.