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

时间:2017-04-08 19:36:06

标签: java android android-fragments

我是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代码?
或者我是否需要在其他地方进行此操作?

我真的很感激任何帮助。

3 个答案:

答案 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;
活动的

onCreateonCreateView类似,setContentView基本上是return rootView对片段的作用。