簡體   English   中英

EditText getText()始終返回空字符串

[英]EditText getText() always returns empty string

我是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);
        }
    }
}

所以我想檢查(如果給定的視圖是一個EditText)EditText是否為空。 如果是,我想在它周圍畫一個邊框。 顯然如果(edt.getText()。toString()。trim()。length()== 0)始終為true。 從此處調用方法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()中,我遍歷視圖子級並將其放入我的Border方法中。 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()中看到的所有內容都是由小組成員創建的,我真的不知道發生了什么事-

我希望你能幫幫我 !

先感謝您!

嘗試這個..

在onCreate之外聲明(范圍仍在類內)

private EditText phone;

然后在onCreate中進行初始化(在初始化之前,請確保使用setContentView設置了相應的布局)

 phone = (EditText) findViewById(R.id.phonenr_et);

並在方法checkInput中將其用作

phone.getText().equals("");

嘗試將其他布局作為以下xml代碼包含在布局文件中,然后在onCreate中將ContentView設置為單個布局文件。

<include layout="@layout/content_main" />

或將所有布局文件手動組合為一個布局,然后在onCreate中將ContentView設置為布局文件

您的問題是您的布局(糟糕的小組成員;))。

您正在使用四個時間setContentView因此僅保留最后一個。

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

使用將這些布局連接起來的布局,這應該會有所幫助。

官方文件

void setContentView(int layoutResID)

從布局資源設置活動內容。 資源將被擴展,將所有頂級視圖添加到活動中。

通過以下代碼檢查它:

edittext.getText().toString().equalsIgnoreCase("")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM