onClickListener для текста кнопки, чтобы изменить основанный на тексте редактирования - PullRequest
0 голосов
/ 19 мая 2018

У меня есть следующий код, но он меняет текст кнопки на пустой.Я в основном пытаюсь изменить текст кнопки, когда она нажимает на то, что пользователь вводит в поле редактирования текста, которое у меня есть.Кажется, что все работает, но когда я нажимаю на любую из кнопок, текст кнопки меняется на пустое / нулевое, и, поскольку я использую содержимое переноса, он также уменьшает размер кнопки.

activity_main.xml

    <LinearLayout
        android:layout_width="368dp"
        android:layout_height="495dp"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#0000ff"
            android:gravity="center"
            android:padding="10dp"
            android:text="Name: Balkar Rana"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="30dp"
            android:textColor="#FFFF00"
            android:textSize="20dp"
            android:textStyle="bold"
            />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:textColor="#FF69B4"
            android:text="Username: "
            android:textSize="20dp"/>

        <EditText
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:textColor="#000000"
            android:textSize="20dp"
            android:id="@+id/username"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:textColor="#63ea1f"
            android:text="Password: "
            android:textSize="20dp"/>

        <EditText
            android:inputType="textPassword"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:textColor="#000000"
            android:textSize="20dp"
            android:id="@+id/password"/>


    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="25dp">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:text="Username"
            android:textSize="20dp"
            android:textStyle="bold"
            android:textColor="#FF69B4"
            android:id="@+id/userButton"
            android:onClick="onClick"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="10dp"
            android:text="Password"
            android:textSize="20dp"
            android:textStyle="bold"
            android:textColor="#63ea1f"
            android:id="@+id/passButton"
            android:onClick="onClick"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="10dp"
            android:text="USER-PASS"
            android:textSize="20dp"
            android:textStyle="bold"
            android:textColor="#FF69B4"
            android:id="@+id/userPassButton"
            android:onClick="onClick"/>

    </LinearLayout>


    </LinearLayout>

</android.support.constraint.ConstraintLayout>

MainActivity.java

    package com.example.balkarrana.lab2;

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    public class MainActivity extends AppCompatActivity{

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

        EditText usernameInput = (EditText)findViewById(R.id.username);
        final String userText = usernameInput.getText().toString();
        final Button userButtonVariable = (Button)findViewById(R.id.userButton);

        EditText passwordInput = (EditText)findViewById(R.id.username);
        final String passText = passwordInput.getText().toString();
        final Button passButtonVariable = (Button)findViewById(R.id.passButton);

        final String userPassText = userText + passText;
        final Button userPassButtonVariable = (Button)findViewById(R.id.userPassButton);

        userButtonVariable.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                userButtonVariable.setText(userText);
            }
        });

        passButtonVariable.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                passButtonVariable.setText(passText);
            }
        });

        userPassButtonVariable.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                userPassButtonVariable.setText(userPassText);
            }
        });
    }

    }

1 Ответ

0 голосов
/ 23 мая 2018

Вы получаете значение EditText в вашем onCreate при первом запуске приложения, и они будут пустыми.Вам нужно получить текущее значение в onClick, а затем установить его.Вот как я это сделаю для userButton.

...
public class MainActivity extends AppCompatActivity{

EditText usernameInput;
Button userButtonVariable;

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

        usernameInput = (EditText)findViewById(R.id.username);
        userButtonVariable = (Button)findViewById(R.id.userButton);

        userButtonVariable.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String userText = usernameInput.getText().toString();
                userButtonVariable.setText(userText);
    }
});

Чтобы остановить изменение размера кнопки, не устанавливайте ширину равной wrap_content.

Попробуйте match_parent, а затем используйте поля.

<Button
       android:layout_width="match_parent"
...
</Button>
...