abuybuy
abuybuy

Reputation: 819

How to use onWindowFocusChanged() method?

I am confused in how to trigger an event when the activity is changed. One thing that I know is using onWindowFocusChanged() method but I don't know how to use it. Please help in one example i.e. when the activity changes, it should show a toast said "Activity changed".

Upvotes: 33

Views: 62488

Answers (4)

Reno
Reno

Reputation: 33792

The following method gets called when window's focus changes. For instance, if the window gains/losses focus, it will be triggered. In case, the window gains focus, hasFocus is true and false otherwise.

 @Override
 public void onWindowFocusChanged(boolean hasFocus) {         
     super.onWindowFocusChanged(hasFocus);
     if (hasFocus) 
         Toast.makeText(context, text, duration).show();
 }

Upvotes: 45

HESHAM AL-MESBAHI
HESHAM AL-MESBAHI

Reputation: 81

Android 10 brought restrictions on apps accessing the clipboard. Now, only the app that currently has focus can access the clipboard.

Previously, you might be accessing this data in onResume, but on Android 10 this doesn’t work. Instead, you can wait until the view is laid out using onWindowFocusChangedcallback.

Upvotes: 2

Fakhriddin Abdullaev
Fakhriddin Abdullaev

Reputation: 4910

Called when the current Window of the activity gains or loses focus. This is the best indicator of whether this activity is visible to the user. The default implementation clears the key tracking state, so should always be called.

@Override
public void onWindowFocusChanged(boolean hasFocas) {
    super.onWindowFocusChanged(hasFocas);
    //your code here
}

hasFocus boolean: Whether the window of this activity has focus.

Upvotes: 3

M.Usman
M.Usman

Reputation: 2119

public class MainActivity extends AppCompatActivity {

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

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        if(!hasFocus) {
            //do anything you want here
            Toast.makeText(MainActivity.this,"Activity changed",Toast.LENGTH_SHORT).show();
        }
    }

}

This might help...

Upvotes: 6

Related Questions