2017-05-09 32 views
-3

進出口目前工作的一個小項目。其中有一個textview,一個按鈕和一個edittext。 TextView的被設置爲1,並單擊按鈕時TextView的由1上升我可以填寫與任何數量(包括-1例如)所述的EditText。我需要從EditText上的值,並將其在TextView中使用相同的按一下按鈕添加到當前值。我該怎麼做呢?這聽起來很簡單,但我似乎找不到解決方案。添加值單擊

MainActivity

package com.example.myapplication; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 
    int numberText = 1; 
    EditText editTextID; 

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

     final TextView textViewID = (TextView) findViewById(R.id.textViewID); 
     textViewID.setText("1"); 
    } 
    public void changeValue(View view){ 
     numberText+=1; 
     TextView textViewID = (TextView) findViewById(R.id.textViewID); 
     textViewID.setText(numberText+""); 

    } 
} 

Activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.myapplication.MainActivity"> 

    <TextView 
     android:id="@+id/textViewID" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello World!" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_bias="0.238" /> 

    <Button 
     android:id="@+id/PlusID" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="changeValue" 
     android:text="@string/plus" 
     tools:ignore="MissingConstraints" 
     android:layout_marginTop="50dp" 
     app:layout_constraintTop_toBottomOf="@+id/textViewID" 
     android:layout_marginLeft="0dp" 
     app:layout_constraintLeft_toLeftOf="@+id/textViewID" 
     android:layout_marginRight="0dp" 
     app:layout_constraintRight_toRightOf="@+id/textViewID" /> 

    <EditText 
     android:id="@+id/editTextID" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="25dp" 
     android:ems="10" 
     android:inputType="textPersonName" 
     app:layout_constraintTop_toBottomOf="@+id/PlusID" 
     android:layout_marginLeft="0dp" 
     app:layout_constraintLeft_toLeftOf="@+id/PlusID" 
     android:layout_marginRight="0dp" 
     app:layout_constraintRight_toRightOf="@+id/PlusID" /> 

</android.support.constraint.ConstraintLayout> 
+0

首先,您必須使用findView方法將editTextID變量與佈局綁定。然後,你可以做你與TextView的做同樣的,但你不必總是實例化它,你可以創建一個全局變量,當你與你的EdiText做到了,在onCreate方法創建實例。 – Jonas452

回答

0

你可以得到的EditText值內changeValue如下:

EditText editTextID = (EditText) findViewById(R.id.editTextID); 
try { 
    int editValue = Integer.parseInt(editTextID.getText().toString()); 
} catch (NumberFormatException e) { 
    // edit text value not a valid integer 
} 

那麼它應該是簡單的加editValue to numberText並顯示在TextView中。

0
int currentNum=Integer.parseInt(textView.getText().toString()); 
     int addedNum=Integer.valueOf(editText.getText().toString()); 
     currentNum+=addedNum; 
     textView.setText(String.valueOf(currentNum)); 
0

方法如下:

public void changeValue(View view) { 

    // Retrieve the content from EditText 
    editTextID = (EditText) findViewById(R.id.edit_text); 
    String content = editTextID.toString(); 

    // Then the value of that content 
    // Wrap below statement in a try-catch for a NumberFormatException 
    int value1 = Integer.parseInt(content); 

    // Add it to value from TextView 
    TextView textViewID = (TextView) findViewById(R.id.textViewID); 

    // Wrap below statement in a try-catch for a NumberFormatException 
    int value2 = Integer.parseInt(textViewID.toString()); 

    // Finally set the correct value 
    int value = value1 + value2; 
    textViewID.setText(value + ""); 

} 

而且,引用存儲TextViewEditText作爲類字段,而不是再次調用findViewById()

0

先嚐試初始化所需的意見&存儲查看情況......它將使您的工作輕鬆了許多。

public class MainActivity extends AppCompatActivity { 

     private TextView displayValueTextView; 
     private EditText valueEditText; 
     private Button button; 

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

      initViews(); 
     } 

     private void initViews(){ 
      displayValueTextView = (TextView) findViewById(R.id.tv_value); 
      valueEditText = (EditText) findViewById(R.id.et_input); 
      button = (Button) findViewById(R.id.button); 
     } 
    } 

這裏是XML佈局,因此您不會對視圖及其關聯的Id感到困惑;

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/rl_activity_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     tools:context="com.example.android.myapplication.MainActivity"> 


     <TextView 
      android:id="@+id/tv_value" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="26sp" 
      android:layout_centerInParent="true" 
      android:maxLines="1" 
      android:text="Hello World"/> 

     <EditText 
      android:id="@+id/et_input" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:ems="9" 
      android:hint="@string/hint_text" 
      android:maxLines="1"/> 

     <Button 
      android:id="@+id/button" 
      android:text="@string/plus" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:onClick="changeValue" 
      android:layout_toRightOf="@+id/et_input" 
      android:layout_alignBottom="@+id/et_input"/> 


    </RelativeLayout> 

的按鈕的onclick屬性設置爲changeValue這是我們的方法,這將改變我們的TextView的價值,依賴於在您的EditText什麼號碼。如下所示這種方法:

public void changeValue(View view) { 
    double numberToAdd; 
    double currentValue; 

    try { 
     numberToAdd = Double.parseDouble(valueEditText.getText().toString()); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     Toast.makeText(this, "Edit Text must contain a number.", Toast.LENGTH_LONG).show(); 
     valueEditText.setText(""); 
     numberToAdd = 0; 
    } 
    try { 
     currentValue = Double.parseDouble(displayValueTextView.getText().toString()); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     currentValue = 0; 
     Toast.makeText(this, "Current value is not a number. It is now set to 0.", Toast.LENGTH_LONG).show(); 
     displayValueTextView.setText("0"); 
    } 

    double finalValue = currentValue + numberToAdd; 
    displayValueTextView.setText(finalValue + ""); 

} 

的numberToAdd變量是我們加入到我們當前的TextView數量......我們必須;

  1. 提取的EditText認爲通過獲取它的文本和解析它作爲一個雙重價值(這將讓我們在處理的EditText小數號碼)。

  2. 然後我們提取的TextView的當前值(如果它不是一個數量將引發異常和TextView的將默認爲0)。

  3. 最後,我們添加了兩個值和設定的TextView作爲代表附加值的字符串。