通过XML已经放置了四个编辑文本框,可以通过单击加号按钮添加其他两个编辑文本框。低于它。
现在,我有按钮名称计算,我想在其中分配与存储在这些编辑文本框中的值相关的事件。
所以喜欢
<edit text1> <edit text2>
< edit text3> <edit text4>
<edit text 5> <edit text6>
在这两个中我都会输入一些值,让我说我想做
((edit text1)*(edit text2))+((edittext3)*(edit text4))+((edittext5)*(edit text6))
当我点击计算时应该完成此事件。我知道如何做按钮点击事件,你可以看到我已经做到了。我需要帮助将这些值解析为计算器点击事件。甚至是来自XML的编辑文本框中的值以及由加号按钮生成的值。
另外,我想稍微改变一下布局。我试着玩它,但现在我设法得到编辑文本框下面的按钮,但当我点击加+按钮编辑框来到下面,而我希望他们来到顶部?就像我上面的编辑文本的布局一样。
Java代码:
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
public class PlusbuttonActivity extends Activity
implements OnClickListener {
private TextView tt;
private TextView j;
/** Called when the activity is first created. */
private LinearLayout root;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View btnButton = findViewById(R.id.button_next);
Button mButton = (Button) findViewById(R.id.button);
mButton.setGravity(Gravity.CENTER);
tt=(TextView)findViewById(R.id.tt);
j=(TextView)findViewById(R.id.j);
root = (LinearLayout) findViewById(R.id.linearLayout);
mButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
View view = doStuff();
addViewToRoot(view);
break;
case R.id.button_next:
View view1 = doCalc();
addViewToRoot(view1);
break;
}
}
private View doCalc() {
// but these are text boxes.. i want to implement the edit boxes and output the result in text box
int parsedInt = Integer.parseInt(tt.getText().toString());
int parsedIn = Integer.parseInt(j.getText().toString());
return null;
}
private View doStuff() {
EditText t = new EditText(PlusbuttonActivity.this);
t.setGravity(Gravity.LEFT);
t.setWidth(250);
EditText a = new EditText(PlusbuttonActivity.this);
a.setGravity(Gravity.RIGHT);
a.setWidth(250);
LinearLayout l = new LinearLayout(PlusbuttonActivity.this);
t.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
// t.setBackgroundColor(0xffCECECE);
a.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
l.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
l.addView(t);
l.addView(a);
return l;
}
private void addViewToRoot(View v){
root.addView(v);
}
}
XML文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/linearLayout">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_weight="1"
android:text="Units"
android:id="@+id/tt"
/>
<TextView android:layout_height="wrap_content"
android:gravity="right"
android:layout_width="wrap_content"
android:layout_weight="1"
android:text="Grades"
android:id="@+id/j"></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="250px"
android:layout_height="wrap_content"
android:id="@+id/edLat">
</EditText>
<EditText
android:layout_height="wrap_content"
android:id="@+id/edLong" android:layout_width="150dp">
</EditText>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="250px"
android:layout_height="wrap_content"
android:id="@+id/et2">
</EditText>
<EditText
android:layout_height="wrap_content"
android:id="@+id/et1" android:layout_width="150dp">
</EditText>
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<Button android:layout_height="wrap_content"
android:gravity="center" android:id="@+id/button" android:text="+" android:layout_width="wrap_content"></Button>
<Button
android:id="@+id/button_next"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:text="CALCULATE"
>
</Button>
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:0)
让我看看我是否理解正确。您想要解析每个EditText中的数字,以便您可以对它们执行算术...
首先,获取EditText的引用。如果EditText是用XML制作的,请确保为其分配了ID并使用
EditText et = (EditText)findViewById(R.id.editID);
如果EditText是用代码编写的,那么你应该已经有了它的引用,所以不需要使用findViewById。
从EditText解析int:
int parsedInt = Integer.parseInt(et.getText().toString());
从EditText解析double:
Double.parseDouble(et.getText().toString());
解析浮动:
Float.parseFloat(et.getText().toString());
一旦你使用你想要的任何类型解析数字,算术很容易。
答案 1 :(得分:0)
我不完全确定您了解当前的代码。
在此代码部分中:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
View view = doStuff();
addViewToRoot(view);
break;
case R.id.button_next:
View view1 = doCalc();
addViewToRoot(view1);
break;
}
}
为什么要为“button_next”调用addViewToRoot? 您不希望结果显示在另一个活动中吗? 你应该使用:
case R.id.button_next:
startActivity(new Intent(this, YourShowCalcResultsActivity.class));
break;
我认为您应该考虑使用RelativeLayout来实现在顶部插入这些布局元素。简单地说,步骤是:在RelativeLayout中的doStuff()中创建你创建的LinearLayout。您还需要将父布局设置为RelativeLayout。 您可以使用addRules()并根据需要对齐元素。