Проблема события нажатия кнопки, разметка и проблема с разбором? - PullRequest
2 голосов
/ 29 октября 2011

Есть три проблемы, с которыми я сталкиваюсь:

  1. Когда я нажимаю кнопку (+), под кнопкой появляются поля редактирования, тогда как я хочу, чтобы они отображались выше. В настоящее время отображается:

Хотите вот так:

 <edit text1> <edit text2>
  <edit text3> <edit text4>
  <edit text5> <edit text6>
  <edit text7> <edit text8>

  <button>      <button2>
  1. Как видите, я попытался проанализировать значение редактирования текста, полученное из xml, в функцию docalc () и отобразить значение в текстовом поле.но это не работает.не показывая мне ничего.
    1. Могу ли я проанализировать значения в Dostuff, если да, как я буду связывать значения в Docalc?

Заранее спасибо ...

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  {

        TextView tt;
        TextView j;
        EditText amount1;
        EditText amount2;
        double x=0;
        double y=0;
        double a=0;
        double z=0;
        double b=0;
        Button btnButton;
        /** Called when the activity is first created. */
        private LinearLayout root;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            // modified
            amount1=(EditText)findViewById(R.id.edittext1);
            amount2=(EditText)findViewById(R.id.edittext2);
            // modified 

            View btnButton =(Button) 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() {
                // TODO Auto-generated method stub
              x=Double.parseDouble(amount1.getText().toString());
              y=Double.parseDouble(amount2.getText().toString());
              z=(x*703);
              tt.setText(Double.toString(z));
              return tt;
            }

        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/Units"
                />
            <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/edittext1">
              </EditText>

              <EditText     
                android:layout_height="wrap_content"    
                android:id="@+id/edittext2" 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/edittext3">
              </EditText>

              <EditText     
                android:layout_height="wrap_content"    
                android:id="@+id/edittext4" 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>
<TextView android:text="TextView" 
android:id="@+id/tt" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"></TextView>



    </LinearLayout>

Ответы [ 2 ]

2 голосов
/ 29 октября 2011

Во-первых, установите id вашего LinearLayout на что-то отличное от main.Как root.Main - это имя xml-файла, содержащего ваш макет, а не идентификатор элемента LinearLayout.

Второе. Вместо использования this в конструкторе для EditText используйте PlusbuttonActivity.this.Поэтому измените строку, которую вы используете для создания EditText, следующим образом:

EditText t = new EditText(PlusbuttonActivity.this);

Вы должны сделать это, потому что когда вы используете метод onClick, вы технически в классе OnClickListener, а this относится кОбъект OnClickListener.Используя PlusbuttonActivity.this, вы поясняете, что имеете в виду объект PlusbuttonActivity, в котором вы сейчас находитесь, а не OnClickListener.

В-третьих, для решения другой проблемы вы не можете ссылаться на rootот тебя анонимный класс OnClickListener.Вместо вызова root.addView(t) вы можете извлечь это из метода.Собрав все это вместе, мы получим это:

import android.app.Activity;

import android.os.Bundle;
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;

public class PlusbuttonActivity extends Activity {
    /** Called when the activity is first created. */
    LinearLayout root;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    Button mButton = (Button) findViewById(R.id.button1);
    root = (LinearLayout) findViewById(R.id.root);
    mButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText t = new EditText(PlusbuttonActivity.this);
            t.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            addViewToRoot(t);
        } 
    });

    }

    private void addViewToRoot(View v){
      root.addView(v);
    }
}
0 голосов
/ 29 октября 2011
  1. Измените id из LinearLayout в main.xml, используйте другое имя.
  2. Сохраните и очистите проект.
  3. Исправьте как @Kurtis Nusbaum, упомянутое выше!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...