Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的应用程序的Java构造函数_Java_Android_Android Fragments - Fatal编程技术网

我的应用程序的Java构造函数

我的应用程序的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

我是Android开发新手。
为了创建一个选项卡式活动,我创建了三个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;