我有一个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);
}
}
应用程序从一开始就崩溃了。 感谢您的耐心和帮助。
祝你好运, 罗伯特
答案 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,因此基本上它会搜索不存在的布局,并且您的编辑文本和按钮因此而变为空