我正在通过修改示例来学习Android。我目前正在研究这个例子。我的代码中的不同之处在于,我想在一个片段中显示listView。
代码(错误显示在注释中):
public class MovieListFragment extends Fragment {
private static final String TAG = MovieListFragment.class.getSimpleName();
private static final String url = "http://example/json/movies.json";
private ProgressDialog pDialog;
private List<Movie> movieList = new ArrayList<Movie>();
private ListView listView;
private CustomListAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_movies, container, false);
listView = (ListView) findViewById(R.id.list);
//cannot resolve method findViewById(?) and cannot resolve symbol list
adapter = new CustomListAdapter(this, movieList);
listView.setAdapter(adapter);
pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...");
pDialog.show();
getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1b1b1b")));
//cannot resolve getActionBar
...
@Override
//method does not override method from its superclass
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
//cannot resolve method getMenuInflater() and cannot resolve symbol menu
return true;
}
在这里,我有以下错误:
首先从oncreateview()返回视图,所以使用
View view=inflater.inflate(R.layout.fragment_movies, container, false);
然后使用此视图view.findViewById()
代替来使用布局元素,findViewById()
最后最后返回此view
关于错误无法解析符号列表
确保在布局fragment_movies中定义的列表视图的ID为android:id="@+id/list"
该getActionBar的事情,你会在具有这种片段的活动做。如果您使用的是支持库,则可以将操作栏可绘制内容更改为
((YourParentActivity which has this fragment)(getActivity())).getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1b1b1b")));
e.g ((MainActivity)(getActivity())).getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1b1b1b")));
您可以执行以下操作来避免围绕的检查错误getsupportActionbar
:
ActionBar actionBar = ((MainActivity)getActivity()).getSupportActionBar();
if(actionBar!=null) {
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#1b1b1b")));
}
如果您希望使用片段中的选项菜单,请在片段的onCreate()中添加setHasOptionMenu(true)
一行。这将访问您的活动的选项菜单。
然后,要使用选项菜单,您必须编写
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
该菜单将属于您的android Activity,请使用该菜单执行操作。获取选择的选项菜单
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
关于错误:customlistadapter中的customlistadapter(android.app.activity列表)无法应用于pDialog = new ProgressDialog(this)中的(android.content.context); 无法将ProgressDialog中的ProgressDialog(android.app.activity列表)应用于(com.kemo.editedtutorial.sliderfragments.MoviesListFragment)
而不是通过此传递,getActivity()
因为他们两个都希望context
将其作为具有活动性的参数值,但是您要从Fragment开始传递它。这样您就可以通过getActivity()
或getActivity().getApplicationContext()
解决此错误,希望对您有所帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句