2012-03-10 73 views
-1

嘿,我是編程新手,所以我想我只是做一個簡單的C到F轉換器,但它在打開它之前一直在模擬器上崩潰,任何人都可以看到爲什麼?我知道這些代碼probally都錯了,但它我會想起你的onClick應用程序不斷崩潰

package com.jamie.convert; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class ConvertorActivity extends Activity implements OnClickListener { 

    TextView textout1; 
    EditText textIn1; 
    Button convert; 
    int x=Integer.parseInt(textIn1.getText().toString()); 
    double fahrenheit = 1.8*x; 



    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     convert = (Button) findViewById(R.id.convert); 
     textIn1=(EditText) findViewById(R.id.input); 
     textout1=(TextView) findViewById(R.id.output); 
     convert.setOnClickListener((android.view.View.OnClickListener)this); 

    } 

    @Override 
    public void onClick(View v) { 
     if(v.getId() == R.id.convert) { 
      textout1.setText(""+fahrenheit); 
     } 


    } 
} 
+1

任何人都可以開始幫助您,您將不得不轉儲崩潰輸出的logcat ... – 2012-03-10 18:59:40

+0

您的錯誤可能在您的佈局文件中。 – 2012-03-10 19:00:26

+0

這個問題與JavaScript有什麼關係?爲什麼JavaScript標籤? – jfriend00 2012-03-10 19:00:33

回答

0

利用這個代碼,而不是這個,你會得到答案

TextView textout1; 
EditText textIn1; 
Button convert; 
static int x; 
//int x=Integer.parseInt(textIn1.getText().toString()); 
//double fahrenheit = 1.8*x; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    convert = (Button) findViewById(R.id.button1); 
    textIn1=(EditText) findViewById(R.id.editText1); 
    textout1=(TextView) findViewById(R.id.textView1); 
    convert.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      x=Integer.parseInt(textIn1.getText().toString()); 
      double fahrenheit = 1.8*x; 
      textout1.setText(""+fahrenheit); 
     } 
    }); 

} 

這會因爲你的int x不會從edittext中獲得任何值而發生。

+0

謝謝,效果很好 – user1261404 2012-03-10 21:10:51

+0

最受歡迎... – 2012-03-11 07:31:08

0

嘗試String.valueOf(fahrenheit); 而不是華氏的唯一途徑也移動你的

int x=Integer.parseInt(textIn1.getText().toString()); 

到onclick方法

0
int x=Integer.parseInt(textIn1.getText().toString()); 

上述行將立即執行Activity啓動。此時,textIn1將爲null

而且這行不應該存在這樣...

double fahrenheit = 1.8*x; 

與...

int x; 
double fahrenheit; 

更換這些線路......然後更改onClick()方法。 ..

@Override 
public void onClick(View v) { 
    if(v.getId() == R.id.convert) { 
     x = Integer.parseInt(textIn1.getText().toString()); 
     fahrenheit = x * 1.8 + 32 
     textout1.setText(String.valueOf(fahrenheit)); 
    } 
} 
+0

謝謝,效果很好 – user1261404 2012-03-10 21:11:55