Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
zoleg
14 / 14 / 1
Регистрация: 10.01.2012
Сообщений: 138
#1

Fragment should provide a default constructor (a public constructor with no arguments) - Программирование Android

28.08.2015, 13:52. Просмотров 231. Ответов 0
Метки нет (Все метки)

Все работало нормально в Эклипсе, но после переезда на Андроид Студио рвботает на эмуляторах, но при попытке создать релиз ругается на messageController, мол не хочет принимать значения, и предлагает использовать дефолтный конструктор.
Как оно вообще должно выглядеть. Подскажите (нубу в java), как оно должно быть написано.
Пока оно так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class loginActivity extends Activity implements OnClickListener, messageController.OnDismissListener {
    SharedPreferences sPref;
    Editor ed;
    CheckBox local;
    Bundle args;
    messageController msg;
    EditText login, pass;
    formController form;
    Button btnLogin;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        msg = new messageController(this);
        form = new formController(this);
        sPref = getSharedPreferences("monopoly", MODE_PRIVATE);// check monopoly
        setContentView(R.layout.local_login_activity);
        local = (CheckBox) findViewById(R.id.monopoly);
        local.setChecked(sPref.getBoolean("monopoly", false));
        login = (EditText) findViewById(R.id.editCallsign);
        pass = (EditText) findViewById(R.id.editPassword);
        btnLogin = (Button) findViewById(R.id.buttonLogin);
        btnLogin.setOnClickListener(this);
        super.onCreate(savedInstanceState);
    }
    @Override
    public void onClick(View v) {
        String userLogin, userPass;
        userLogin = login.getText().toString();
        userPass = pass.getText().toString();
        switch (v.getId()) {
            case R.id.buttonLogin:
                args = new Bundle();
                if (userLogin.isEmpty() | userPass.isEmpty()) { //проверяем пусты ли поля
                    args.putInt("type", 2); // put args (show dialog with one button "OK")
                    args.putInt("msg", 0); // put args (body message)
                    msg.setArguments(args);
                    msg.show(getFragmentManager(), "ema");
                    Log.w(getResources().getString(R.string.tag), "поля пусты");
                    break;
                }
                ed = sPref.edit(); //set mode monopoly
                ed.putBoolean("monopoly", local.isChecked());
                ed.commit();
                if (form.db.checkLogin(userLogin, userPass) != 0)
                    form.showForm(2, this, ""); //rewrite to startWork.class
                else {
                    // not exist user or invalid username an password
                    args.putInt("type", 2); // put args (show dialog with one button "OK")
                    args.putInt("msg", 1); // put args (body message)
                    msg.setArguments(args);
                    msg.show(getFragmentManager(), "ema");
                }
                break;
        }
    }
    @Override
    public void OnDismissListener(int res) {
        // TODO Auto-generated method stub
    }
}
А это то на что Студио ругается:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public class messageController extends DialogFragment implements OnClickListener {
    AlertDialog.Builder adb;//нативный компонент, показывающий окошки пользователю
    int type, msg;//type - тип окошка(с одной кнопкой или тремя), msg - сообщения для пользователя, хранится в String.xml
    private int res = -1;//необходим для вывода результата
    String[] message;//массив самих сообщений
    String tag;//используется для отладочной информации
    private OnDismissListener mCallback;//чтобы мы могли узнать, что выбрал пользователь
    private soundController sound;//контроллер звуков
    private Context context;//необходимый контекст для работы
    public messageController(Context cnt){
        sound = new soundController(cnt);
    }
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        //tag = getResources().getString(R.string.tag);
        //message = getResources().getStringArray(R.array.msg);
        //get args
        super.onCreate(savedInstanceState);
        type = getArguments().getInt("type");//получем тип окошка (одна кнопка или три)
        msg = getArguments().getInt("msg");//получаем id сообщения, который хранится в String.xml
        //set title and body for message
        adb = new AlertDialog.Builder(getActivity())
                .setTitle(R.string.warning)//устанавливаем заголовок сообщения
                .setMessage(message[msg]);//устанавливаем тело сообщения
        switch(type){
            case 1:    //добавляем три кнопки для сообщения
                adb.setPositiveButton(R.string.yes, this)
                        .setNegativeButton(R.string.no, this)
                        .setNeutralButton(R.string.cancel, this);
                break;
            case 2:    //добавляем одну кнопку для сообщения
                adb.setPositiveButton(R.string.ok, this);
                break;
            default:
                break;
        }
        sound.play(1);//проигрываем звук
        return adb.create();//показываем само сообщение
    }
    @Override
    public void onClick(DialogInterface Dialog, int i) {//узнаем на какую кнопку нажал пользователь
        switch(i){
            case -1:
                res = 1;
                break;
            case -2:
                res = 2;
                break;
            case -3:
                res = 0;
                break;
            default:
                break;
        }
        mCallback.OnDismissListener(res);
        res = -1;
    }
    public interface OnDismissListener {//необходимо для работы
        public void OnDismissListener(int res);
    }
    @Override
    public void onAttach(Activity activity) {//необходимо для работы
        super.onAttach(activity);
        mCallback = (OnDismissListener) activity;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2015, 13:52     Fragment should provide a default constructor (a public constructor with no arguments)
Посмотрите здесь:
Make sure class name exists, is public, and has an empty constructor that is public Android
Call to super must be first statement in constructor Android
Android Custom view . is missing constructor used by tools
Android Обновление fragment из другого fragment
Fragment Android
DialogFragment в Fragment Android
WebView in Fragment Android
Android Fragment and context
SwipeRefreshLayout + Fragment Android
Работа с Fragment Android
Fragment и ListView Android
Android TextView and Fragment

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru