2012-02-07 8 views
0

私は単純なユニットコンバータを開発しましたが、私は2つの問題を抱えています。 最初に私はコンパイルしてAPKを実行した後、変換ボタンをクリックするとアプリケーションがクラッシュします。 もう1つは、テキスト "After"の隣のボックスにforResult(計算後の答えの変数)をどのように接続できるかわかりません。 私は本当に....あなたの助けを請うおかげで.... ^^ユニット変換の問題

Main.xml 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:gravity="left|right" 
android:orientation="vertical" 
android:background="#66FFFF" >  

<FrameLayout 
    android:id="@+id/frameLayout2" 
    android:layout_width="match_parent" 
    android:layout_height="20dp" > 
</FrameLayout> 

<TextView 
    android:id="@+id/UnitText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/UnitText" 
    android:textColor="@android:color/black" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<Spinner 
    android:id="@+id/Spinner1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:prompt="@string/UnitPrompt"/> 

<FrameLayout 
    android:id="@+id/frameLayout3" 
    android:layout_width="match_parent" 
    android:layout_height="20dp" > 
</FrameLayout> 


<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right" 
    android:orientation="vertical" > 


    <Button 
     android:onClick="converter" 
     android:id="@+id/ConvertButton" 
     android:layout_width="131dp" 
     android:layout_height="wrap_content" 
     android:text="@string/ConvertText" /> 

</LinearLayout> 

<FrameLayout 
    android:id="@+id/frameLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="30dip" > 
</FrameLayout> 

<TableLayout 
    android:id="@+id/tableLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 

     <EditText 
      android:id="@+id/BeforeBox" 
      android:layout_width="250dp" 
      android:layout_height="wrap_content" 
      android:inputType="numberDecimal" /> 

     <TextView 
      android:id="@+id/BeforeText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/BeforeText" 
      android:textColor="@android:color/black" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 

     <EditText 
      android:id="@+id/AfterBox" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:inputType="numberDecimal" /> 

     <TextView 
      android:id="@+id/AfterText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/AfterText" 
      android:textColor="@android:color/black" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 
    </TableRow> 
</TableLayout> 

BasicUnitconverterActivity.Java 

package arirang.unit.converter; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.Button; 
import android.widget.TextView; 
public class BasicUnitConverterActivity extends Activity { 

private double val1; 
Spinner Type; 

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

    Spinner spinner1 = (Spinner) findViewById(R.id.Spinner1); 
    ArrayAdapter adapter1 = ArrayAdapter.createFromResource(
      this, R.array.UnitList, android.R.layout.simple_spinner_item); 
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner1.setAdapter(adapter1); 
} 



public void converter() { 
    Type = (Spinner)findViewById(R.id.Spinner1); 
    val1 = (R.id.BeforeBox); 
    double dbResult = 0; 

    if(Type.getSelectedItem().toString().equals("meter to inch")) 
    { 
     dbResult = val1 * 39.3700787 ; 
    } 

    else if(Type.getSelectedItem().toString().equals("meter to feet")) 
    { 
     dbResult = val1 * 3.2808399; 
    } 

    else if(Type.getSelectedItem().toString().equals("feet to inch")) 
    { 
     dbResult = val1 * 12; 
    } 

    else if(Type.getSelectedItem().toString().equals("feet to meter")) 
    { 
     dbResult = val1/3.2808399; 
    } 

    else if(Type.getSelectedItem().toString().equals("inch to meter")) 
    { 
     dbResult = val1/39.3700787 ; 
    } 

    else if(Type.getSelectedItem().toString().equals("inch to feet")) 
    { 
     dbResult = val1/12; 
    } 

    else if(Type.getSelectedItem().toString().equals("kilogram to pound")) 
    { 
     dbResult = val1 * 2.20462262; 
    } 

    else if(Type.getSelectedItem().toString().equals("pound to kilogram")) 
    { 
     dbResult = val1/2.20462262; 
    } 

    else if(Type.getSelectedItem().toString().equals("Fahernheit to Celsius")) 
    { 
     dbResult=(val1 - 32)/(5/9); 
    } 

    else if(Type.getSelectedItem().toString().equals("Celsius to Fahernheit")) 
    { 
     dbResult = (9/5) * val1 + 32; 
    } 

    TextView ShowBox = (TextView)findViewById(R.id.AfterBox); 
    ShowBox.setText("forResult"); 
} 
} 

答えて

0

あなたが取り残さ重要な情報がいくつかあります。 1つはクラッシュのlogcat情報です。もう1つは、[変換]ボタンをクリックしたときのonClickメソッドです。

あなたには1つの提案があります。それが助けにならない場合は、より多くの情報を投稿してください。

私は、Convertボタンをクリックすると、あなたがリストしたコンバータメソッドを呼び出すことになります。この方法では、次のように計算されます。

val1 = (R.id.BeforeBox); 

次にval1を次の計算に使用します。このコード行は、そのEditTextの内容ではなく、BeforeBoxのIDを取得します。私はこれがクラッシュを引き起こすのに十分かどうか、あるいはそれがあなたに奇妙な結果を与えるかどうかは分かりません。

+0

私はandroid:onClick = "converter"を使用しましたが、BeforeBoxからval1に番号を取得するために必要なコマンドやコードは何ですか? – user1193653

+0

BeforeBoxはEditTextなので、EditText t =(EditText)findViewById(R.id.BeforeBox);次に、String s = t.getText()。toString();でテキストを取得できます。次に、Double d(s)のようなことをすることができます。そして最後にval1 = s.doubleValue(); - ここで書式設定して申し訳ありませんが、このコメントボックスに改行を挿入することはできません。 –