How to generate unique button with button click - java

I have a floating action button that, when clicked, an editText field opens up where the user can enter text. The text would then be taken via getText().toString() and entered into the text of a new button. I can make it so that each time the user goes through this process, a new button is created and positioned below the previously created button. The problem is, each new button is not unique. It creates a new instance of the exact same button so that every button has the exact same id. How do I generate a new, completely unique button with unique id in order to reference each button individually later on?
confirmBtn.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View view) {
if (!editTitle.getText().toString().isEmpty()) {
projectBtn = new Button(getActivity());
projectBtn.setId(R.id.projNewBtn);
projectBtn.setText(editTitle.getText().toString());
project_layout.addView(projectBtn);
}
editTitle.setText("");
project_layout.removeView(editTitle);
project_layout.removeView(linearLayout);
imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
}
});

I just solved my own problem by simply adding two lines of code; one to initialize a button ArrayList, and one to add the button to the array each time a new button is created. I simply set the id as a variable int so that once stored in the array, I am able to reference it via the corresponding number position.

Related

How to make the Button visible one by one when I remove last char

I have textview typing in it by using buttons and every button clicked it will be invisible
backspace.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
//extra code remove last char
//txt.setText(txt.getText().toString().substring(0, txt.getText().toString().length() - 1));
StringBuffer easer = new StringBuffer(txt.getText());
easer.reverse();
easer.deleteCharAt(0);
easer.reverse();
String x = new String(easer);
txt.setText(x);
//my button 1 get char from array
b1.setVisibility(View.VISIBLE);
//my button 2 get char from array
b2.setVisibility(View.VISIBLE);
//my button 3 get char from array
b3.setVisibility(View.VISIBLE);
//my button 4 get char from array
b4.setVisibility(View.VISIBLE);
//my button 5 get char from array
b5.setVisibility(View.VISIBLE);
}
});//end click listener
If your buttons have text that appear in your TextView then you can use TextWatcher. With the help of TextWatcher you may get event afterTextChanged(Editable arg0). In that function you can set condition related to your text and visible button after backspace button clicked.
If this is not what you wanted then please specify your question a bit more.

Repeat input events

Suppose I have one InputText which on clicking a button leads to several events (e.g. 4). On Clicking button,
Event 1 happens and gives output to buffer 1. On checking buffer 1 is filled,
Event 2 happens and gives output to buffer 2. On checking buffer 2 is filled,
Event 3 happens and gives output to buffer 3. On checking buffer 3 is filled,
Event 4 happens.
That is the Events only occurs if the previous buffer is filled. Else its in Event=0 mode.
How do I do this in Android?
You can add an .setOnClickListener() on the inputText, and when inputText is clicked you do the code in that section. After that code has run you can call another event, and do this as many times as you want.
Put these in the OnCreate method:
EditText inputText = (EditText) findViewById(R.id.edittextname);
inputText.setOnClickListener(action1);
After OnCreate, put:
public void action2 () {
//action 2 code here
//add other actions here
}
View.OnClickListener action1 = new View.OnClickListener() {
public void onClick (View v) {
//action 1 code here
action2();
}

Multiple buttons. Passing actions to the next button in Java

Java Android question
I have x, say 5, buttons in a row.
Each button has a different number value displayed on the button.
Button one is active, the rest are not- not clickable. They are greyed out.
To show Button 1 is active it fades up and down.
Once clicked the button pops up a message. The user Ok's that, this activates Button 2, and deactivates Button 1.
Then it happens through all buttons, one by one. The final button doesn't produce the pop up message.
My question...
I want to create a method that sets the first button as current and then once clicked sets the next as current, and so on.
Can anyone tell me how to do this? I don't need to know how to fade buttons etc, its literally how to set button as current, and within that method the user click sets the next button as current.
Many thanks in advance.
EDIT
OK, I've had a go...its not working, but it seems so close...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_workout_one);
int[] buttonIds = new int[] {R.id.button_1,R.id.button_2,R.id.button_3,R.id.button_4,R.id.button_5};
setButton(buttonIds);
}
private void setButton(int[] buttId){
int isCurrent = 0;
while(isCurrent < 5) {
Button currentButton = (Button) findViewById(buttId[isCurrent]);
//TODO Make current button pulse
currentButton.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
v.clearAnimation();
v.setBackgroundColor(0xFF00FF00);
v.setFocusable(false);
v.setFocusableInTouchMode(false);
v.setClickable(false);
setTimer();
isCurrent++;
}
});
I know that the problem is the isCurrent++ is not accessible outside the onClick method. How do I right this? Am I close or is this a major funk up and do I have to rethink?
Just use a global variable which track the current button, and check this variable to identify the current active button for determining the action in onClickListener. To fade out a button try this code snippet
button.setClickable(false);
button.setBackgroundColor(Color.parseColor("#808080"));
You need something like this:
private int activeButton = 1;
private void buttonClickHandler(){
switch(activeButton++){
case : 1
button1.setEnabled(true):
// show popup, hide/animate for button 1
break;
case : 2
button2.setEnabled(true);
// same for button 2
case : 3
// same for button 3
case : 4
// same for button 4
}

How to add EditText elements in Android on the same activity?

I have a DetailsActivity which has a TextView and TimeEditText for Date. User can add a date in that. There is a Button called Add Detail
I want that when a user enters a date like d-m-yy (future) then below this TimeEditText element, the activity should show a no. of WeekEditText as
Week1: WeekEditText1 (To add details for 1st week)
Week2: WeekEditText2 (To add details for 2nd week) and so on.
The total no. of week is (AddedDate - CurrentDate)/7
One of way of doing is calling another new activity on clicking Add Detail button and then showing all EditTexts on next activity while passsing AddedDate etc through Intent.
But is it possible to show EditText on same page below TimeEditText after user enters a date?
Have a Button that when clicked adds the number of EditTexts you need
public void onClick(View v)
{
// do whatever else you need here
int numWeeks =(AddedDate - CurrentDate)/7;
for (i=1; i<=numWeeks;i++)
{
EditText et = new EditText(YourActivity.this);
// add whatever here
}
}
You can add whatever kind of Layout you want before creating the EditText then add each one to that Layout. Something like that ought to work for you
You can dynamically inflate a layout or layout element such as and Edit Text.
For Example,
if(TimeEditText.getText != null)
EditText et = new EditText();

Trying to edit value of TextView on LongClick -- Almost working

I have two elements (TextView) in my XML layout that when a LongClick is pressed it will prompt the user to enter in a new value and then when the DONE button is clicked it should show the newly inputed value to the tvScoreHome using setText().
When I do a Long Click on the mentioned element the edit field and keyboard appear as expected. However, it won't allow me to type anything. When I type something it nothing shows up (but the device vibrates as if a button was pressed) and when the DONE button is clicked it vibrates as well but it does not exit the keyboard and show anything in the tvScoreHome element.
Any ideas why?
// set the onLongClickListener for tvScoreHome
tvScoreHome.setOnLongClickListener(new View.OnLongClickListener() {
#Override
public boolean onLongClick(View v) {
final EditText userInput = (EditText) findViewById(R.id.userInput);
InputMethodManager imm = (InputMethodManager) context.getSystemService(Service.INPUT_METHOD_SERVICE);
userInput.setVisibility(View.VISIBLE);
imm.showSoftInput(userInput, 0);
tvScoreHome.setText( userInput.getText() );
userInput.setVisibility(View.INVISIBLE);
return true;
}
});
You need to give the user a chance to input some text before copying the data and hiding the EditText.
Remove these two lines from your listener:
tvScoreHome.setText( userInput.getText() );
userInput.setVisibility(View.INVISIBLE);
Perhaps you could use an OnFocusChangeListener to run these two lines when userInput loses focus.

Categories

Resources