Строковая переменная пуста после присвоения значения из editText.getText (). ToString () - PullRequest
0 голосов
/ 28 марта 2020

Я создал всплывающее меню из панели навигации, и все работает в отношении реального всплывающего окна. Тем не менее, у меня есть EditText во всплывающем окне, и я хотел бы, чтобы пользователь вводил в него текст, а затем нажимал кнопку, чтобы выполнять другие действия. Моя проблема в том, что когда я присваиваю значение EditText.getText (). ToString () строковой переменной в функции, строковая переменная все еще пуста, и когда я проверяю, является ли EditText.getText (). ToString () пустым, это не пусто. Поэтому я не понимаю, как присвоение строковой переменной все еще возвращает пустую строку в переменной. Я действительно новичок в программировании Android, поэтому любые советы будут оценены. Спасибо.

Фрагмент метода onCreate

public class workouts extends AppCompatActivity {
    private ActionBarDrawerToggle mToggle;
    private static final String TAG = "Workouts";
    private ExpandableListView listView;
    private ExpandableListAdapter listAdapter;
    private List<String> listHeader;
    private HashMap<String, List<String>> listHashMap;


    // Pop up menu variables
    private EditText categoryTitle;
    private Dialog myDialog;
    private String headerTitle = "";
    private boolean validTitle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_workouts);

        DrawerLayout mDrawerLayout = findViewById(R.id.drawer);
        mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open,R.string.close);
        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        final NavigationView navigationView = (NavigationView)findViewById(R.id.navigationView);

        listView = (ExpandableListView)findViewById(R.id.expandable_list_view);
        initializeData();
        listAdapter = new expandableListAdapter(this, listHeader, listHashMap);
        listView.setAdapter(listAdapter);

        // Pop-up menu
        myDialog = new Dialog(this);

        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId())
                {
                    case R.id.back:
                    {
                        finish();
                        break;
                    }
                    case R.id.addCategory:
                    {
                        //View header = getLayoutInflater().inflate(R.layout.list_group, null);
                        //listView.addHeaderView(header);
                        /*
                            1) Create pop-up menu w/ EditText box
                            2) Type in header group to add
                            3) Click create button
                            4) Add new header to list
                         */
                        try {
                            ShowPopup(item);
                        }
                        catch (Exception e)
                        {
                            Log.d(TAG, "Add pop-up: " + e.toString());
                        }
                        break;
                    }

Функция для создания всплывающего окна Строка, которую я пытаюсь исправить, это headerTitle

public void ShowPopup(MenuItem menuItem)
    {
        TextView textClose;
        Button btnAddCategory;
        myDialog.setContentView(R.layout.add_category_popup);
        textClose = (TextView)myDialog.findViewById(R.id.textClose);
        btnAddCategory = (Button)myDialog.findViewById(R.id.addCategory);
        categoryTitle = (EditText)myDialog.findViewById(R.id.category_title);
        headerTitle = categoryTitle.getText().toString();    // Header title to be used as hash key
        Log.i(TAG, "ShowPopup: Assigned header title");
        Log.i(TAG, "ShowPopup: " + headerTitle);
        textClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myDialog.dismiss();
            }
        });
        btnAddCategory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(categoryTitle.getText().toString().isEmpty())
                {
                    categoryTitle.setError("Field cannot be empty");
                    categoryTitle.requestFocus();
                    validTitle = false;
                }
                else
                {
                    categoryTitle.setError(null);
                    validTitle = true;
                }
                if(validTitle) {
                    listHeader.add(headerTitle);    // Add header title to list of headers
                    List<String> newHeader = new ArrayList<>(); // Create new expandable list w/ 0 items
                    listHashMap.put(listHeader.get(listHeader.size() - 1), newHeader);
                    myDialog.dismiss();
                }
            }
        });
        myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        myDialog.show();
    }

1 Ответ

0 голосов
/ 28 марта 2020

Сначала необходимо присвоить значение переменной:

        btnAddCategory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                headerTitle = categoryTitle.getText().toString()
                if(headerTitle.isEmpty())
                {
                    categoryTitle.setError("Field cannot be empty");
                    categoryTitle.requestFocus();
                    validTitle = false;
                }
                else
                {
                    categoryTitle.setError(null);
                    validTitle = true;
                }
                if(validTitle) {
                    listHeader.add(headerTitle);    // Add header title to list of headers
                    List<String> newHeader = new ArrayList<>(); // Create new expandable list w/ 0 items
                    listHashMap.put(listHeader.get(listHeader.size() - 1), newHeader);
                    myDialog.dismiss();
                }
            }
        });
...