有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我是Android开发新手
为了创建一个选项卡式活动,我创建了三个Java类:1)About;2) 搜索;3) 名单

在我的搜索布局中,我希望有一个搜索栏,所以我创建了一个EditText(通过拖放)和一个按钮(通过拖放)
为了使我的标签工作,在我的搜索。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;
    }

    }

现在在我的搜索中。java类我还想开始编写搜索栏的代码,但为了做到这一点,我想我需要一个构造函数,在主活动中这样开始:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);

但当我为它编写代码时,它会给我以下错误:

1)在protected:'com中的onCreate(Bundle)。实例亚历克斯。项目搜索“在”安卓中与“onCreate(Bundle)”一起崩溃。支持v4。应用程序。碎片试图分配较弱的访问权限(“受保护”);是“公开的”
2) 在setContentView上:无法解析方法“setContentView(int)”

在“onCreate(Bundle)”方法中开始为搜索栏编写Java代码时,我可以做什么或需要做什么更改
还是我需要在别的地方做

我真的很感激任何帮助


共 (3) 个答案

  1. # 1 楼答案

    I think I need a constructor that starts like this

    这不是构造函数。你问的都是方法

    on protected: 'onCreate(Bundle) in 'com.example.alex.project.Search' clashes with 'onCreate(Bundle)' in 'android.support.v4.app.Fragment

    不确定,但是你提到的所有方法通常应该是public,而不是protected

    你也应该取消评论@Override

    What can I do/what do I need to change to start writing java code for search bar

    你需要用你所拥有的做一些类似的事情

    View rootView = ...
    
    SearchBar search = (SearchBar) rootView.findViewById(R.id.search);
    // edit searchbar
    
    return rootView;
    

    onCreate因为一个活动就像onCreateView,而setContentView本质上就是return rootView对片段的作用

  2. # 2 楼答案

    方法签名有误 You can't weaken the access privilege of an overridden method.使用

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    

    您可以在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);
    }
    
  3. # 3 楼答案

    关于第二个问题,看起来您还没有定义search布局。你需要在res/layout文件夹中有一个布局search.xml:阅读更多信息:What is R.layout.search?

    如果您有setContentView方法,那么您应该在扩展*ActivityMainActivity类中调用setContentView方法,因为Fragment类没有这样的方法