2011-10-29 69 views
2

有三个问题,我面对:按钮点击事件发布,布局和解析问题?

  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> 
+0

那些'**'是什么? –

+0

我想突出显示那些...... :(sorrie fr that –

+0

他正在使用这些来突出他认为问题所在的地方 –

回答

2

首先,设置你的LinearLayout的我d除了main以外的东西。像root。 Main是包含布局的xml文件的名称,而不是LinearLayout项目的ID。

第二,而不是在EditText的构造函数中使用this,请使用PlusbuttonActivity.this。因此,改变你使用创建的EditText此行:

EditText t = new EditText(PlusbuttonActivity.this); 

你必须这样做,因为当你在onclick方法的技术上的OnClickListener类,并this指OnClickListener对象。通过使用PlusbuttonActivity.this,您正在澄清您的意思是您当前所在的PlusbuttonActivity对象,而不是OnClickListener。

三,要解决其他问题,您不能从您的匿名OnClickListener类中引用root。您可以不用调用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

爱你吨:)谢谢很多 –

+0

男人帮我..我进入更多的问题 –

+0

请看看文件..我修改它..请看看它... 我也编辑了这个问题 –

0
  1. 变化LinearLayoutmain.xmlid,使用不同的名称。
  2. 保存&清洁项目。
  3. 修复上面提到的@Kurtis Nusbaum