简体   繁体   中英

Android onPause() not geting called

Right now I have a android fragment in which i want to store persistant data onPause. But Nothing is ever being logged. Why is onPause() never being called in the fragment?

Fragment:

package com.alarm.fragments;

import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.ToggleButton;

import com.alarm.R;
import com.alarm.models.Alarm;
import com.alarm.sql.Database;

public class AlarmCreateFragment extends Fragment {

    ToggleButton sunday;
    ToggleButton monday;
    ToggleButton tuseday;
    ToggleButton wednesday;
    ToggleButton thursday;
    ToggleButton friday;
    ToggleButton saturday;

    ToggleButton on;
    TimePicker time;
    EditText alarmName;
    TextView alarmTitle;
    private Alarm newAlarm;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        init();
        return inflater.inflate(R.layout.frag_create_alarm, container, false);

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e("db", "onCreate called");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.e("db", "onPause called");
        newAlarm.setHour(getHour());
        newAlarm.setMinute(getMinute());
        newAlarm.setName(getTitle());
        newAlarm.setOn(getOn());
        Database db = new Database(getActivity());
        db.storeAlarm(newAlarm);
    }

    private void init() {
        sunday = (ToggleButton) getView().findViewById(R.id.sunday);
        monday = (ToggleButton) getView().findViewById(R.id.monday);
        tuseday = (ToggleButton) getView().findViewById(R.id.tuseday);
        wednesday = (ToggleButton) getView().findViewById(R.id.wednesday);
        thursday = (ToggleButton) getView().findViewById(R.id.thursday);
        friday = (ToggleButton) getView().findViewById(R.id.friday);
        saturday = (ToggleButton) getView().findViewById(R.id.saturday);
        on = (ToggleButton) getView().findViewById(R.id.alarm_status);
        time = (TimePicker) getView().findViewById(R.id.alarm_time);
        alarmName = (EditText) getView().findViewById(R.id.edit_alarm_name);
        alarmTitle = (TextView) getView().findViewById(R.id.alarm_title);
        newAlarm = new Alarm();
    }

    private int getHour() { // 0-23
        return time.getCurrentHour();
    }

    private int getMinute() {
        return time.getCurrentMinute();
    }

    private String getTitle() {
        return alarmTitle.getText().toString();
    }

    private boolean getOn() {
        return on.isChecked();
    }

    /*
     * Toggle the alarm on or off when toggle button clicked
     */
    public void changeStatus(View view) {
        boolean on = getOn();
        if (on) {
            newAlarm.setOn(true);
        } else {
            newAlarm.setOn(false);
        }
    }

}

Activity:

package com.alarm.activity;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import com.alarm.R;

public class AlarmCreateActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.frag_create_alarm);
    }
}

Any help on this would be greatly appreciated. I just want to know why the fragments onPause() method isn't being called. (the log never happens)

Try this..

The fragments onResume() or onPause() will be called only when the Activities onResume() or onPause() is called.

They are tightly coupled to the Activity .

For more info

Read this.

The lifecycle of the activity in which the fragment lives directly affects the lifecycle of the fragment, such that each lifecycle callback for the activity results in a similar callback for each fragment. For example, when the activity receives onPause(), each fragment in the activity receives onPause().

I can search this link. http://developer.android.com/guide/components/fragments.html#Lifecycle

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM