java - EditText getText() 总是返回空字符串

标签 java android string android-edittext is-empty

我是 Android 编程的新手,我认为我最大的问题是我无法真正理解所有这些膨胀的东西。你能帮我解决这个问题吗?

我正在处理一个表单,表单内容被分成不同的页面。在您进入表格的下一页之前,您需要填写所有必填的 EditText。因此,当单击“下一步”按钮时,我想让我的表单编辑文本检查是否有空输入。如果有 Edittexts 留空,则会在它们周围绘制边框,您无法继续。

我的问题是,即使我填写了一些 Edittext,它们仍然总是被认为是空的。所以我填写它们,单击“下一步”按钮,然后在每个周围绘制一个边框,无论是否为空。

基本上这是导致问题的方法:

public void Border(View view){

    if (view instanceof EditText) {

        EditText edt = (EditText) view;


        if (edt.getText().toString().trim().length() == 0) {
        edt.setBackgroundResource(R.drawable.border);
        }
    }
}

所以我想检查(如果给定的 View 是一个 EditText)EditText 是否为空。 如果是,我想在它周围画一个边框。 显然 if (edt.getText().toString().trim().length() == 0) 始终为真。 方法 Border() 从这里调用:

public boolean CheckInput(View v) {
    EditText phone = (EditText) findViewById(R.id.phonenr_et);
    EditText email = (EditText) findViewById(R.id.email_et);
    CheckBox box = (CheckBox) findViewById(R.id.agreement_checkbox);

    if (v.getId() != R.id.job_hunting_btn) {

        LinearLayout layout = (LinearLayout) findViewById(R.id.job_hunt_lay);

        if (layout.getChildCount() != 0) {
            for (int i = 0; i < layout.getChildCount(); i++) {
                View view = layout.getChildAt(i);
                Border(view);  // <-- Border is called
            }
        }
    }
        ...
        }

在 CheckInput() 中,我循环遍历 subview 并将它们放入我的 Border Method 中。 CheckInput() 在这里调用:

    public void OnNextButtonClick(View v) {
    if (CheckInput(v)) {
        ViewList.get(CurrentViewId).setVisibility(View.GONE);
        if (v.getId() == R.id.job_hiring_btn)
            CurrentViewId = ArbeitgeberViewId;
        else {

            CurrentViewId++;
            if (CurrentViewId == ArbeitgeberViewId)
                CurrentViewId = LastViewId;
        }
        ViewList.get(CurrentViewId).setVisibility(View.VISIBLE);
    }
}

在这里,我想确保您先检查输入,然后才能继续填写表单的下一部分。

这是我的 OnCreate() 方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setContentView(R.layout.content_main);
    setContentView(R.layout.job_hiring_data1);
    setContentView(R.layout.job_hiring_data2);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    ViewList.add(findViewById(R.id.content_main_lo));


    ViewList.add(findViewById(R.id.job_hiring_data1_lo));
    ViewList.add(findViewById(R.id.job_hiring_data2_lo));
    ViewList.add(findViewById(R.id.job_hunt_lay));


    ArbeitgeberViewId = ViewList.size();


    ViewList.add(findViewById(R.id.offered_job_data1_lo));


    LastViewId = ViewList.size();
    ViewList.add(findViewById(R.id.formular_finished_lo));

    ImprintViewId = ViewList.size();
    ViewList.add(findViewById(R.id.imprint_lo));


    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

我需要先“膨胀” Edittext 还是什么?老实说,这是一个小组项目,所以在 OnCreate() 中看到的所有内容都是由小组成员创建的,我真的不知道那里发生了什么 -

我希望你能帮助我!

提前致谢!

最佳答案

你的问题是你的布局(坏组成员;))。

您使用了四次 setContentView 所以只保留最后一次。

setContentView(R.layout.activity_main);
setContentView(R.layout.content_main);
setContentView(R.layout.job_hiring_data1);
setContentView(R.layout.job_hiring_data2);

使用将连接这些布局的布局,这应该会有所帮助。

Official doc

void setContentView (int layoutResID)

Set the activity content from a layout resource. The resource will be inflated, adding all top-level views to the activity.

关于java - EditText getText() 总是返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40739862/

相关文章:

java - JTextField 周围的 TitledBorder

java - 在 Spring Security Java Config 中创建多个 HTTP 部分

android - 在不同布局的 ViewPager Indicator 中设置数据

Android 应用程序在提取 zip 文件时没有响应

c - C语言如何获取并显示单词的密度和出现次数?

java - 更改波表音高(重新采样)

java - 使用 Firebase Admin SDK 从 Firebase 实时数据库获取信息

android - 在PageKeyedDataSource中设置DataSource大小,获得占位符效果

java - 测试一个字符串是否与集合中的任何其他字符串不同

python - 在字符串 python 中使用 string.format 和 "{"