将类从活动转移到片段

时间:2014-08-19 20:51:36

标签: android android-fragments

我试图使用viewPager,所以我想将我的类从一个活动改为碎片,但我得到了很多错误,所以你能告诉我什么是错的,我需要做什么?

这是我最初的活动:

    package com.pickapp.pachu.pickapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.content.Intent;
import java.util.Random;

public class MainScreen extends Activity implements OnClickListener {
    private TitlesDB titles;
    private Button getPickUpLine;
    private TextView pickUpLine;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_screen);
        titles = new TitlesDB(this);
        initDB();
        initialize();
    }

    public void initialize() {
        this.getPickUpLine = (Button) findViewById(R.id.bGetLine);
        this.getPickUpLine.setOnClickListener(this);
        this.pickUpLine = (TextView) findViewById(R.id.tvLine);
        this.pickUpLine.setOnClickListener(this);
    }

    public void initDB() {
        titles.open();
        if (!this.titles.isExist()) {
            titles.createEntry("The I \n Have Cancer");
            titles.createEntry("The Ocean");
        }
        titles.close();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bGetLine:
                titles.open();
                Random rnd = new Random();
                int index = rnd.nextInt(titles.getLength()) + 1;
                pickUpLine.setText(titles.getTitleById(index));
                titles.close();
                break;
            case R.id.tvLine:
                if(!pickUpLine.getText().toString().equals(""))
                {
                    Intent intent  = new Intent(this, PickAppLine.class);
                    intent.putExtra("key", pickUpLine.getText().toString());
                    startActivity(intent);
                }
                break;
        }
    }
}

以下是我的尝试:

    package com.pickapp.pachu.pickapp;

    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.TextView;

    /**
     * Created by Golan on 19/08/2014.
     */
    public class MainScreenFragment extends Fragment implements OnClickListener{

        private TitlesDB titles;
        private Button getPickUpLine;
        private TextView pickUpLine;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


            titles = new TitlesDB(getActivity());
            initDB();
            View v = getView();
            initialize(v);
return inflater.inflate(R.layout.activity_main_screen, container, false);
        }

        public void initialize(View v) {
            this.getPickUpLine = (Button) v.findViewById(R.id.bGetLine);
            this.getPickUpLine.setOnClickListener(this);
            this.pickUpLine = (TextView) v.findViewById(R.id.tvLine);
            this.pickUpLine.setOnClickListener(this);
        }

        public void initDB() {
            titles.open();
            if (!this.titles.isExist()) {
                titles.createEntry("The I \n Have Cancer");
                titles.createEntry("The Ocean");
            }
            titles.close();
        }

        @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bGetLine:
                titles.open();
                Random rnd = new Random();
                int index = rnd.nextInt(titles.getLength()) + 1;
                pickUpLine.setText(titles.getTitleById(index));
                titles.close();
                break;
            case R.id.tvLine:
                if(!pickUpLine.getText().toString().equals(""))
                {
                    Intent intent  = new Intent(this, PickAppLine.class);
                    intent.putExtra("key", pickUpLine.getText().toString());
                    startActivity(intent);
                }
                break;
        }
    }
    }

1 个答案:

答案 0 :(得分:0)

我们不会只修复您的所有代码。你必须自己做!删除开头不需要的所有内容,然后再次开始添加一个。修复所有错误。一切都错了,很难知道实际问题是什么。

我立即看到的一件事肯定是行不通的:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.activity_main_screen, container, false); // NO, NO, NO!!

    titles = new TitlesDB(getActivity());
    initDB();
    initialize();
}

在您拥有更多代码之前,方法中有一个return语句。那不行。退货声明必须在最后!