2011-10-29 111 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