I need somebody to check this small code (isKeyPressed) - java

I have a PlayState and a MenuState. In PlayState, when I click the back-button with my Samsung(Android)-Phone, then it exits the App. What I want it to do when I click the back-button, is to get back into MenuState.
So in PlayState, I tried to set up isKeyPressed:
#Override
protected void handleInput() {
if (Gdx.input.isKeyPressed(Input.Keys.BACK));
gsm.set(new MenuState(gsm));
}
#Override
public void update(float dt) {
handleInput();
I'm not too disappointed, because when I hold the back-button then it goes to MenuState and when I let the button go after like 3 seconds, then the MenuState even stays.
Of course this is not the way I want it to work, because nobody wants to hold the button, but just click it.
Tho, when I just click it, then it loops between MenuState and PlayState (like a framework) and errors/closes the app without a notification.
Any ideas?

Override onBackPressed then write your condition on it, That will help you to solve the problem .

Related

Is there an event that triggers when the app is closed?

As the title says.
Specifically, I am writing an app that prints data to files over the course of runtime. I want to know when I can tell my PrintWriters to save the files. I understand that I can probably do autosave every X minutes, but I am wondering if Android Studio will let me save on close instead. I tried using onDestroy but the code block never executed. (To be precise, I started the app, did a few things, closed the app, clicked Recents, and swiped the app away. The debugger showed that the app never got to that code.)
My current solution attempts to catch the surrounding circumstances by checking for key presses but this only works for the back and volume buttons and not the home, recent, or power buttons.
#Override public boolean onKeyDown(int key, KeyEvent event) {
close();
return false;
}
There's a built in hook to the Activity lifecycle to save your state- onSaveInstanceState. There's even a bundle passed into you to save your state into for it to be restored (the matching function is onResumeInstanceState). And as a free bonus, if you call super.onSaveInstanceState and super.onRestoreInstanceState, it will automatically save the UI state of your app for all views with an id.
Please check the activity lifecycle:
https://developer.android.com/guide/components/activities/activity-lifecycle
Or if you're using a fragment:
https://developer.android.com/guide/fragments/lifecycle
Consider using one of these two:
#Override public void onStart() {
super.onStart();
close();
}
#Override public void onPause() {
super.onPause();
close();
}

JavaFx Button enabler in listview

I have 4 simple buttons that interact with a listview. If you click a certain button you can go one down, one up, to the start and to the end of the listview. So each button has a different onAction method:
(Buttons: previous, next, end, start)
public void toNext(){
list.getSelectionModel().selectNext();
}
public void toPrevious(){
list.getSelectionModel().selectPrevious();
...
But now I want to disable the buttons if they can't go to the start, end, up or down. I tried to do the following by adding this code to the method toPrevious (example):
previous.setDisable(list.getSelectionModel().getSelectedIndex() == 0)
This code does disable the button but it won't enable it when you can go to the previous string in the listview. Does anyone has a simple solution for this?
You can use a binding:
previous.disableProperty().bind(
list.getSelectionModel().selectedIndexProperty().isEqualTo(0));
next.disableProperty().bind(
list.getSelectionModel().selectedIndexProperty().isEqualTo(
Bindings.size(list.getItems()).subtract(1)));

How to listen on save button or assign an event after it was clicked in Vaadin 7

When I am editing grid inline I can save or cancel my grid row changes. I want to update my database entries after button 'save' will be pushed(Data base mechanism has already done) How can I implement it?
My container:
BeanItemContainer<CategoryOfService> beansContainer;
Editing view:
All what I need it know which listeners I have to use. I found some CommitHandler which I can add by EditorFieldGroup class but I can't implement it properly maybe there is have to be another way to resolve problem.
There's kind of a way to capture inline Save click on the grid.
grid.getEditorFieldGroup().addCommitHandler(new FieldGroup.CommitHandler() {
#Override
public void preCommit(FieldGroup.CommitEvent commitEvent) throws FieldGroup.CommitException {
//...
}
#Override
public void postCommit(FieldGroup.CommitEvent commitEvent) throws FieldGroup.CommitException {
//...
}
});
After clicking Save both methods preCommit and postCommit get called.
Hope it helps :)
Grid does not currently give you any direct way of adding listeners to the save and cancel buttons for the inline editor, although that is something that might change in Vaadin 7.6.
As a workaround before that happens, the CommitHandler approach that you already mentioned is still supposed to work. You can find a basic example here. The contents of your BeanItemContainer should be fully updated in the postCommit phase.
grid.getEditor().addSaveListener((EditorSaveListener<Product>) event -> {
//your stuf
HibernateDataSource.updateProduct(event.getBean());
});

Notice every click in a gwt application

I'm working on a automatic logout class. After x minutes without actions I want to log out the user.
Everything is working, but I need a point in my application where to reset my timer.
I want to reset the timer with every click in my application. Is there a way to notice every click an throw an event? Maybe a LayeredPanel or GlassPanel?
I don't like the idea of resetting the timer by moving the mouse.
You can add some code to your EntryPoint:
Event.addNativePreviewHandler(new NativePreviewHandler() {
#Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (event.getNativeEvent().getType().equals("click")) {
// reset your timer
}
}
});
In case the user clicks in your app, you'll get the chance to do something.

How to recreate buttons in previous activity?

I have a problem with code in Android Studio.
I have ActivityA and ActivityB.
In ActivityA I have buttons. ActivityB is about settings. For example, I can choose the theme of the app. All done using SharedPreferences.
If I change theme to DARK with this code:
Button Settings = (Button) findViewById(R.id.settings);
Settings.setTextColor(Color.BLACK);
Settings.setBackgroundResource(R.drawable.shapestylethis3);
and I press back to go o ActivityA - then buttons are changed.
Now when I'm in ActivityB and I wanna change back for theme LIGHT then I would like to get back this default button on ActivityA:
style="#android:style/Widget.Button.Small"
But I don't know how to achieve that. ActivityB is changing right after clicking the button "save" because apart from saving to SharedPreferences I used also recreate(); in onClick.
But when I put recreate() in the onResume in ActivityA, then it's like an infinite loop. I will be really thankful for helping me finding a solution.
Thank you in advance.
You can easily avoid the recrate() going in the infinite loop in your ActivityA using a public static variable or a SharedPreference (any of these two you might prefer).
Let us have a public static variable in ActivityA like the following.
public static boolean shouldRecreate = false;
Now when you are changing the style from ActivityB, set the ActivityA.shouldRecreate = true and do not call the recreate().
Now in the onResume function of your ActivityA check the value of shouldRecreate and call the recreate() function accordingly.
#Override
protected void onResume() {
super.onResume();
if (shouldRecreate) {
recreate();
shouldRecreate = false;
}
}
Hope that helps!

Categories

Resources