Событие кнопки со значением из XML и Java-кода - PullRequest
0 голосов
/ 30 октября 2011

Имеется четыре текстовых поля для редактирования, которые уже размещены с помощью 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 голосов
/ 31 октября 2011

Я не совсем уверен, что вы понимаете текущий код.

  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;
          }
        }
    

Почему вы вызываете addViewToRoot для "button_next"?Разве вы не хотите, чтобы результаты отображались в другом действии?Вы должны использовать:

                 case R.id.button_next:
                 startActivity(new Intent(this, YourShowCalcResultsActivity.class));
                 break;
  1. Я думаю, вам следует рассмотреть возможность использования RelativeLayout для вставки этих элементов макета вверху.Вкратце выполните следующие шаги: Оберните LinearLayout, который вы создаете в doStuff () в RelativeLayout.Вы должны иметь родительский макет также, чтобы быть RelativeLayout.Чем вы можете использовать addRules () и выравнивать элементы так, как вам нравится.

0 голосов
/ 30 октября 2011

Дайте мне посмотреть, правильно ли я понимаю.Вы хотите проанализировать число из каждого EditText, чтобы вы могли выполнять арифметику с ними ...

Сначала получите ссылку на EditText.Если EditText был создан в XML, убедитесь, что вы присвоили ему идентификатор и используете

EditText et = (EditText)findViewById(R.id.editID);

Если EditText был создан в коде, у вас уже должна быть ссылка на него, поэтому нет необходимости использовать findViewById.

Чтобы проанализировать int из EditText:

int parsedInt = Integer.parseInt(et.getText().toString());

Чтобы проанализировать двойник из EditText:

Double.parseDouble(et.getText().toString());

Для анализа с плавающей точкой:

Float.parseFloat(et.getText().toString());

Как только вы проанализируете числа, используя любой тип, который вы хотите, арифметика становится легкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...