具有来自xml和java代码的值的Button事件

时间:2011-10-30 15:20:17

标签: android android-layout

通过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>

2 个答案:

答案 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)

我不完全确定您了解当前的代码。

  1. 在此代码部分中:

        @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;
          }
        }
    
  2. 为什么要为“button_next”调用addViewToRoot? 您不希望结果显示在另一个活动中吗? 你应该使用:

                     case R.id.button_next:
                     startActivity(new Intent(this, YourShowCalcResultsActivity.class));
                     break;
    
    1. 我认为您应该考虑使用RelativeLayout来实现在顶部插入这些布局元素。简单地说,步骤是:在RelativeLayout中的doStuff()中创建你创建的LinearLayout。您还需要将父布局设置为RelativeLayout。 您可以使用addRules()并根据需要对齐元素。

    2.  3。