如何在数学运算Java中使用EditText值(numberDecimal)

时间:2016-08-18 15:19:57

标签: java android xml android-edittext double

我有一个EditText视图:

  <EditText
            android:id="@+id/vorgabezeit"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:background="#0277BD"
            android:imeOptions="actionDone"
            android:inputType="numberDecimal"
            android:maxLength="5"
            android:textAlignment="textEnd"
            android:textColor="#ffffff"
            android:textCursorDrawable="@null"
            android:textStyle="bold"
            />

在此EditText中输入的值我想在数学运算中使用它。 在我有固定值之前:

public void submitOrder(View view) {
     displayPrice((procente / myEditNum) * mitarbeiter);
}

其中变量定义为:

int procente = 120;
int mitarbeiter = 1;

现在,我在网上搜索了几个小时如何获取在EditText中输入的值并进一步使用id,这就像我得到的那样接近:

public class MainActivity extends AppCompatActivity {
    int procente = 120;
    int mitarbeiter = 1;
    EditText myEdit = (EditText) findViewById(R.id.vorgabezeit);
    String myEditValue = myEdit.getText().toString();
    double myEditNum = Double.parseDouble(myEditValue);

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

    public void submitOrder(View view) {
        displayPrice((procente / myEditNum) * mitarbeiter);
    }
}

应用程序从一开始就崩溃了。 感谢您的耐心和帮助。

祝你好运, 罗伯特

3 个答案:

答案 0 :(得分:1)

首先您需要在发生崩溃时发布LogCat。

第二次在调用findViewById之前,您无法致电setContentView。您应该在onCreate中初始化编辑文本。

// Initialize values in onCreate after setContentView
EditText myEdit;
String myEditValue;
double myEditNum;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myEdit = (EditText) findViewById(R.id.vorgabezeit);
    myEditValue = myEdit.getText().toString();
    myEditNum = Double.parseDouble(myEditValue);
}

答案 1 :(得分:0)

getText()怎么样?我添加了按钮,因为您必须在用户操作后获取文本,而不是在onCreate事件之后。

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mButton = (Button)findViewById(R.id.button);
    mEdit   = (EditText)findViewById(R.id.vorgabezeit);

    mButton.setOnClickListener(
        new View.OnClickListener()
        {
            public void onClick(View view)
            {
                Log.v("EditText", mEdit.getText().toString());
            }
        });
}

答案 2 :(得分:0)

确保添加android:inputType =&#34; number&#34;到xml上的EditText以确保用户只能在其上键入数字,然后:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        findViewById(R.id.button)
                .setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        displayPrice((procente / Double.parseDouble(((EditText) findViewById(R.id.vorgabezeit))
                                .getText().toString())) * mitarbeiter);
                    }
                });
    }

btw您的代码崩溃,因为您在将内容视图设置为活动之前调用了findviewById,因此基本上它会搜索不存在的布局,并且您的编辑文本和按钮因此而变为空