2016-09-20 25 views
3

我試圖做一個關於用戶輸入的應用程序的姓氏,名字和地址。我試圖做的是讓用戶輸入EditText並將其顯示在TextView上,但由於運行時出現錯誤,因此我無法顯示以下文本。它所做的是,如果我點擊提交按鈕,它將顯示用戶輸入,但它在TextView上的內容是「android.support.v7.widget.TextView ....等」。 我剛剛開始進行Android編程,一切都很混亂。請告訴我解決這個問題的最基本的東西。基本Android:如何顯示用戶輸入字符串?

public class MainActivity extends AppCompatActivity { 

      EditText fname, lname; 
      TextView display; 
      Button result; 

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


       fname = (EditText) findViewById(R.id.etFirstname); 
       lname = (EditText) findViewById(R.id.etLastname); 
       display = (TextView) findViewById(R.id.tvResult); 
       result = (Button) findViewById(R.id.btnSubmit); 



       result.setOnClickListener(new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View v) 
        { 
         display.setText("Name: " + lname + ", " + fname); 
        } 
       }); 
     } 

    } 
+0

只是 呼叫顯示。setText(「Name:」+ lname.getText()+「,」+ fname.getText()); – lukjar

回答

7

您已經定義了正確的變量,但您必須獲取編輯文本的值。所以用這個替換你的代碼。

result.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     display.setText("Name: " + lname.getText().toString() + ", " + fname.getText().toString()); 
    } 
    }); 
+0

非常感謝你! –

1

lname和fname是EditText你無法連接2 EditText與字符串。

你需要做的

display.setText("Name: " + lname.getText() + ", " + fname.getText()); 
+0

如果你調用函數toString(),那麼你不連接2 EditText你連接2字符串。 String toString() 它返回String,所以如前所述,您可以將2 EditText與String連接起來。 –

+0

我建議你試一試,看看會發生什麼 –

+0

這就是爲什麼話題被創建的原因,他試圖用2 edittext連接字符串,他有錯誤。 –

3

您需要獲取從EditText小部件的文本時,要顯示它在TextView。現在,您只需將對象打印到setText

試試這個。

display.setText("Name: " + lname.getText().toString() + ", " + fname.getText().toString()); 
3

您沒有獲取EditText的文字。取使用lname.getText()的EditText文本的toString()然後將此文本設置爲您TextView

試試這個代碼:

result.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     display.setText("Name: " + lname.getText().toString() + ", " + fname.getText().toString()); 
    } 
}); 
1

我的建議是模塊化代碼。

首先創建一個包含fName和lName的bean類作爲兩個字符串字段並覆蓋toString()方法,如下所示。

class Person { 
    private String fName; 
    private String lName; 

    // Getter and Setter methods, which you can write. 

    public String toString() { 
     return "Name: " + lname + ", " + fname; 
    } 
} 

創建bean對象,並將監聽器放在兩個edittext中。

Person person = new Person(); 

fname.addTextChangedListener(new TextWatcher() { 

      public void afterTextChanged(Editable s) { 

      //set bean object field fName here. 
      person.setFname(s.toString()); 
      } 

      public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

      public void onTextChanged(CharSequence s, int start, int before, int count) {} 
     }); 

與其他edittext字段相同。

lname.addTextChangedListener(new TextWatcher() { 

       public void afterTextChanged(Editable s) { 

       //set bean object field lName here. 
       person.setLName(s.toString()); 
       } 

       public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

       public void onTextChanged(CharSequence s, int start, int before, int count) {} 
      }); 

然後在onclick監聽器裏面簡單地返回person對象的toString()方法。

result.setOnClickListener(new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View v) 
        { 
         display.setText(person.toString()); 
        } 
       }); 
0

,以建立在雨果Houyez回答

display.setText(String.format("Name: %1$s, %2$s",lname.getText().toString(),fname.getText().toString); 

現在你可以看到你想要顯示的第一個值滿弦。

%s你可以添加一個字符串值。 %1 $ s的值意味着第一個字符串將顯示在這裏%2 $ s將顯示第二個字符串等等。

相關問題