我的应用程序的Java构造函数
我是Android开发新手。我的应用程序的Java构造函数,java,android,android-fragments,Java,Android,Android Fragments,我是Android开发新手。 为了创建一个选项卡式活动,我创建了三个Java类:1)About;2) 搜索;3) 名单 在我的搜索布局中,我希望有一个搜索栏,因此我创建了一个EditText(通过拖放)和一个按钮(通过拖放)。 为了使选项卡正常工作,在my Search.java中,我有以下代码: public class Search extends Fragment{ //@Override public View onCreateView(LayoutInfla
为了创建一个选项卡式活动,我创建了三个Java类:1)About;2) 搜索;3) 名单 在我的搜索布局中,我希望有一个搜索栏,因此我创建了一个EditText(通过拖放)和一个按钮(通过拖放)。
为了使选项卡正常工作,在my 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) 在受保护的上:'com.example.alex.project.Search'中的'onCreate(Bundle)'与'android.support.v4.app.Fragment'中的'onCreate(Bundle)'崩溃;试图分配较弱的访问权限(“受保护”);是“公开的”
2) 在setContentView
上:无法解析方法“setContentView(int)”
在“onCreate(Bundle)”方法中开始为搜索栏编写Java代码时,我可以做什么,或者需要做什么更改?
还是我需要在别的地方做
非常感谢您的帮助。您的方法签名有误。使用
您可以在OnViewCreated
中访问您的EditText
:
@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);
}
关于第二个问题,看起来您还没有定义search
layout。您需要在res/layout文件夹中有一个布局search.xml
:阅读更多信息:
如果您有它,那么您应该在扩展*活动的main Activity
类中调用setContentView
方法,因为Fragment
类没有这样的方法
我想我需要一个这样开始的构造函数
那不是构造函数。你问的都是方法
受保护时,'com.example.alex.project.Search'中的'onCreate(Bundle)'与'android.support.v4.app.Fragment'中的'onCreate(Bundle)'冲突
对此不确定,但您提到的所有方法通常都应该是公共的
,而不是受保护的
您还应该取消注释@Override
要开始为搜索栏编写java代码,我可以做什么/需要做什么更改
你需要用你所拥有的做一些类似的事情
View rootView = ...
SearchBar search = (SearchBar) rootView.findViewById(R.id.search);
// edit searchbar
return rootView;
活动的onCreate
类似于onCreateView
,而setContentView
本质上就是returnrootview
对片段所做的 谢谢你的回复。我已经试过了,然后当我把代码放在里面的时候,例如,当我尝试使用sTxt=(EditText)findviewbyd(R.id.sTxt)之类的东西的时候
(sTxt是search.xml中editText区域的ID(通过拖放)),在findViewById()上它给了我这个错误:无法解析方法“findViewById(int)”setContentView
,findViewById
,等等都是活动的方法。你的类是一个片段
。那么我需要创建活动
类进行搜索吗?方法签名怎么会错<代码>onCreateView
对于片段来说很好。您也可以使用rootView.findViewById
抱歉,我没有提到,我还需要一个按钮,因为它是我要创建的搜索栏的一部分。现在它告诉我按钮无法解析。另外,如果搜索栏中没有任何内容,我希望用户不能按下按钮(搜索)。因此,我还想使用sTxt.addTextChangedListener(new TextWatcher(){
,它告诉我无法解析TextWatcher,当我尝试myBtn.setEnabled
时也是如此。谢谢你的回复。对不起,如果我不清楚,但如果你是这个意思,我确实有search.xml
。是2)在修复了1)个后问题仍然出现?还没有解决任何问题。如果你是说search.xml
我一直都有它。如果我尝试将protected
更改为public
onCreate(bundle),任何人都不会给我1个错误,但仍然有2个错误。我尝试添加代码(关于搜索栏(编辑文本、按钮等))到我的主要活动,但当我运行它时,emulator无法打开应用程序,它说它一直停止,然后无法打开。但是,你需要扩展一些活动
类,与你一起搜索
。请参阅本教程:谢谢你的回复。在哪里写?抱歉,我不太明白。你在哪里写SearchBar来自?我在search.xml中有editText字段和一个按钮,我认为应该将其变成搜索栏,我想为其编写代码,例如,在用户将文本放入搜索栏的文本字段部分之前,应该禁用该按钮。
View rootView = ...
SearchBar search = (SearchBar) rootView.findViewById(R.id.search);
// edit searchbar
return rootView;