我是Android开发的新手 为了创建一个选项卡式Activity,我创建了三个Java类:1)关于; 2)搜索; 3)清单;
在我的搜索布局中,我希望有一个搜索栏,所以我创建了一个EditText(通过拖放)和一个Button(通过拖放)。
为了使我的标签工作,在我的Search.java中我有以下代码:
public class Search extends Fragment{
//@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.search, container, false);
return rootView;
}
}
现在在我的Search.java类中,我也想开始为我的搜索栏开发代码,但是为了做到这一点,我想我需要一个像主要活动那样开始的构造函数:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
但是当我为它编写代码时,它会给我这些错误:
1)on protected
:'com.example.alex.project.Search'中的onCreate(Bundle)与'android.support.v4.app.Fragment中的'onCreate(Bundle)'崩溃;试图分配较弱的访问权限('protected');是'公开'
2)on setContentView
:无法解析方法'setContentView(int)'
在'onCreate(Bundle)'方法中,我可以做什么或需要更改以开始为搜索栏编写Java代码?
或者我是否需要在其他地方进行此操作?
我真的很感激任何帮助。
答案 0 :(得分:1)
您的方法签名错误。 You can't weaken the access privilege of an overridden method.使用
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
您可以访问EditText
中的OnViewCreated
:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// Parameter view is the inflated view you passed in onCreateView
// Replace with your id
EditText myEditText = (EditText) view.findViewById(R.id.edit1);
}
答案 1 :(得分:0)
关于第二个问题,看起来您没有定义search
布局。你需要在你的res / layout文件夹中有一个布局search.xml
:在这里阅读更多内容:What is R.layout.search?
如果你拥有它,那么你应该在setContentView
扩展MainActivity
的类中调用*Activity
方法,因为Fragment
类没有这种方法。
答案 2 :(得分:0)
我想我需要一个像这样开始的构造函数
那不是构造函数。你问的一切都是方法。
on protected:'com.example.alex.project.Search'中的onCreate(Bundle)与'android.support.v4.app.Fragment
中的'onCreate(Bundle)'冲突
不确定,但您提到的所有方法通常都应为public
,而不是protected
。
您还应该取消评论@Override
。
我可以做什么/我需要更改什么来开始为搜索栏编写java代码
你需要用你拥有的东西做这样的事情。
View rootView = ...
SearchBar search = (SearchBar) rootView.findViewById(R.id.search);
// edit searchbar
return rootView;
活动的 onCreate
与onCreateView
类似,setContentView
基本上是return rootView
对片段的作用。