2013-04-14 2 views
0

Eclipse에서 첫 번째 Android 애플리케이션 (간단한 온도 변환기)을 만들려고했지만 휴대 전화의 버튼을 클릭하면 앱이 다운됩니다. 여기버튼 클릭시 Android 앱이 충돌 함

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/radioGroup1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="16dp" 
    android:onClick="onBtnClicked" 
    android:text="Calculate" /> 

내가 가야하는 방법을 잘 모르겠어요 버튼 버튼의 XML에 대한 마지막

04-13 20:19:50.423: E/AndroidRuntime(25200): FATAL EXCEPTION: main 
04-13 20:19:50.423: E/AndroidRuntime(25200): java.lang.IllegalStateException: Could not execute method of the activity 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.view.View$1.onClick(View.java:3674) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.view.View.performClick(View.java:4198) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.view.View$PerformClick.run(View.java:17158) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.os.Handler.handleCallback(Handler.java:615) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.os.Looper.loop(Looper.java:137) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.app.ActivityThread.main(ActivityThread.java:4918) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at java.lang.reflect.Method.invokeNative(Native Method) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at java.lang.reflect.Method.invoke(Method.java:511) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at dalvik.system.NativeStart.main(Native Method) 
04-13 20:19:50.423: E/AndroidRuntime(25200): Caused by: java.lang.reflect.InvocationTargetException 
04-13 20:19:50.423: E/AndroidRuntime(25200): at java.lang.reflect.Method.invokeNative(Native Method) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at java.lang.reflect.Method.invoke(Method.java:511) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.view.View$1.onClick(View.java:3669) 
04-13 20:19:50.423: E/AndroidRuntime(25200): ... 11 more 
04-13 20:19:50.423: E/AndroidRuntime(25200): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x59 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.content.res.Resources.getText(Resources.java:242) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at android.widget.TextView.setText(TextView.java:3773) 
04-13 20:19:50.423: E/AndroidRuntime(25200): at com.example.myfirstapp.MainActivity.onBtnClicked(MainActivity.java:43) 
04-13 20:19:50.423: E/AndroidRuntime(25200): ... 14 more 
04-13 20:19:50.453: E/android.os.Debug(718): [email protected] > dumpstate -k -t -z -d -o /data/log/dumpstate_app_error 

그리고를 클릭

package com.example.myfirstapp; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.Window; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.TextView; 
public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
String number; 
int number2; 
int output; 
boolean F; 
public void onBtnClicked(View view){ 

    EditText mEdit = (EditText)findViewById(R.id.editText1); 
    TextView myTextView = (TextView) findViewById(R.id.label); 

number = mEdit.getText().toString(); 
number2 = Integer.parseInt(number); 

if(F=true){ 
output=number2*9/5+32; 
} 
else{ 
output=number2-32*5/9; 
} 

myTextView.setText(output); 
} 

public void onRadioButtonClicked(View view) { 

    boolean checked = ((RadioButton) view).isChecked(); 

    switch(view.getId()) { 
     case R.id.radio0: 
      if (checked) 
       F = true; 
      break; 
     case R.id.radio1: 
      if (checked) 
       F = false; 
      break; 
    } 
} 
} 

로그 캣은 전체 자바 코드를입니다 이걸 수정하면 누군가가 도와 줄 수 있기를 바랍니다. 감사합니다. .

+0

43은 무엇 라인? – Gustek

+0

나는 이것이 문제라고 생각하지 않지만 if (F = true) 대신 을 사용하고 간단하게 (F) 또는 (F == true)를 사용하면 – FoxCrafter

답변

5

먼저 그들에게 OnClickListener를 설정하여 버튼을 초기화

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
//initialize views here 
EditText mEdit = (EditText)findViewById(R.id.editText1); 
TextView myTextView = (TextView) findViewById(R.id.label); 
Button yourButton=(Button)findViewByid(R.id.youridforbutton); 
//set onclicklistener for your button 
yourbutton.setOnClickListener(
    new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
number = mEdit.getText().toString(); 
number2 = Integer.parseInt(number); 

if(F=true){ 
output=number2*9/5+32; 
} 
else{ 
output=number2-32*5/9; 
} 

myTextView.setText(""+output); 
} 
}); 

} 

유사하게 설정 다른 버튼도

+0

이 작동합니다. 항상 환영합니다. –

+0

언제나 환영합니다. .. –

0

특정 버튼을 듣기 위해 클릭 수신기에 알려야합니다. 즉, 버튼에 OnItemClickListener를 설정합니다. 다음과 같은 것 :

Button button = (Button) findViewById(R.id.button1); 
button.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    // do the "on click" action here 
    } 
}); 

희망이 있습니다. 그렇지 않은 경우 추가 문제로 의견을 말하십시오.

2

당신은 오버로드의 setText 방법

myTextView.setText(String.valueOf(output)); 

문자열

출력을 캐스팅 할 필요가 있고 당신은 그것을 정수를 통과 할 때 그것은 자원의 ID가 될 것으로 기대하고있다.

0

정수를 TextViews로 설정할 수 없습니다. 문자열로 변환해야합니다.

myTextView.setText(String.valueOf(output)); 
관련 문제