2016-11-22 13 views
2

私はアンドロイドプログラミングの新人です。私の最大の問題は、この膨張するものの周りに本当に私の心を包むことができないと思います。これで私を助けてくれますか?EditText getText()は常に空文字列を返します

私はフォームで作業していますが、フォームのコンテンツは別のページに分かれています。フォームの次のページに進む前に、すべての必須の編集テキストを記入する必要があります。だから、 "次へ"ボタンをクリックすると、私は私のフォームのedittextsに空の入力をチェックさせたい。 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が空であるかどうかを確認したいです。 「はい」の場合は、その周りに境界線を描きたいと思います。 明らかに、(edt.getText()。toString()。trim()。length()== 0)は常にtrueです。 メソッドボーダー()はここから呼び出されます。CheckInputで

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は、()ここで呼ばれている:

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()で見られるものはすべてグループメンバーによって作成されていて、実際に何が起こっているのかわからない -

私はあなたを助けてくれることを願っています!

ありがとうございます!

+0

「EditText」には何を入力しますか? –

+0

EditTextが1つだけだった場合、正しい子であるかどうか、テキストが正しくタイプされているか、ドロアブルが正しいかどうかなど、正しい子を反復していたかどうかを確認しましたか?これは[mcve]ではありませんが、このコードを単純なスニペットに限定できますか? – AxelH

+0

@IulianPopescuテストの対象ですか?ランダムな文字の大部分は – kalu

答えて

-1

このコードでそれを確認してください。

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

悲しいことに、同じ結果です。最初に入力を保存したり、何かを宣言したりするなど、メジャーなものを見逃しているような気がしますか?すべての種類の入力が無視されるので、 – kalu

+0

長さのチェックとの違いは何ですか? – AxelH

0

は、次に確認してください(のonCreateに初期化するのonCreate(まだクラス内の範囲)

private EditText phone; 

宣言。これを試してみてください対応するレイアウトは、初期化の前にsetContentViewを使用して設定されます)

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

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

の方法checkInput内部にそれを使用するには、のonCreateに1つのレイアウトファイルにsetContentView次のXMLコードとしてレイアウトファイル内の他のレイアウトを含むようにしようとします。

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

かのonCreateでレイアウトファイルにsetContentView手動で単一のレイアウトにすべてのレイアウトファイルを結合

+0

アンドロイドモニターから詳細を提供できる方が良いでしょう。 – Azi

+0

現在の出力は何ですか? – Azi

0

あなたの問題がある、あなたのレイアウト(悪いグループメンバー;))。

あなたは4回の時間setContentViewを使用しているので、最後のものだけが保持されます。

これらのレイアウトを結ぶレイアウトを使用してください。これが役立ちます。

Official doc

無効setContentView(int型layoutResID)

は、レイアウトリソースから活動内容を設定します。すべてのトップレベルビューをアクティビティに追加して、リソースを膨らませます。

+0

あなたは「含む」という意味ですか? (申し訳ありませんが英語は私の母国語ではありません)タグでこれを行いますか? – kalu

+0

連結する(もう一方を追加する)。他の場所のレイアウトが必要な場合は、それらを新しいファイルに含めることができます。そうでない場合は、レイアウトを1つのファイルに貼り付けるだけです(レイアウトロジックを壊さないように注意してください)。 – AxelH

+0

私はすべてのビューのために別々のXMLファイルを持っています...私は私のレイアウトのすべてに対して1つのファイルしか持たず、このファイルに対してsetContView()を使用するはずですか? – kalu

関連する問題