2011-12-19 3 views
1

Im очень новый для Java (в основном дуэли со встроенным только)застрял на реализацию кнопки

Im написанием простого андроидом программы, которая передает значение входного EditText другого EditText по нажатию кнопки. Однако каждый раз, когда я нажимаю кнопку, моя программа падает. хотел бы кто-нибудь комментарии :)

Это моя главная:

package Mushroom.Pickers.Note; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
//import android.widget.Button; 
//import android.widget.TableLayout; 

public class Mushy extends Activity { 
//private TableLayout layout; 
//private Button button; 

/** Called when the activity is first created. */ 

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

public void Compute_data(View view) {//Function to perform on click 
    //Perform calculation  
    int Hours; 
    EditText start_time = (EditText)findViewById(R.id.editText26) ; 
    Hours = Integer.parseInt(start_time.getText().toString());  

    EditText test_time = (EditText)findViewById(R.id.editText43); 
    test_time.setText(Hours); 

} 
} 

и в моем XML:

<Button 
     android:id="@+id/Button1" 
     android:layout_width="134px" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical|center_horizontal" 
     android:textSize="15sp" 
     android:text="Calculate" 
     android:onClick="Compute_data" 
     android:textColor="#1e90ff" /> 
</TableRow> 
<EditText 
     android:id="@+id/editText26" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical|center_horizontal" 
     android:inputType="number" 
     android:width="350px" /> 

<EditText 
     android:id="@+id/editText43" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical|center_horizontal" 
     android:inputType="number" 
     android:width="350px" /> 

Компоновка появляется тонкая, только вопрос сбой при нажатии на кнопку: (

P/S: здесь LogCat:

12-19 03:03:02.106: W/ResourceType(667): No package identifier when getting value for resource number 0x00000004 
12-19 03:03:02.106: D/AndroidRuntime(667): Shutting down VM 
12-19 03:03:02.106: W/dalvikvm(667): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
12-19 03:03:02.275: E/AndroidRuntime(667): FATAL EXCEPTION: main 
12-19 03:03:02.275: E/AndroidRuntime(667): java.lang.IllegalStateException: Could not execute method of the activity 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.view.View$1.onClick(View.java:3039) 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.view.View.performClick(View.java:3480) 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.view.View$PerformClick.run(View.java:13983) 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.os.Handler.handleCallback(Handler.java:605) 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.os.Looper.loop(Looper.java:137) 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-19 03:03:02.275: E/AndroidRuntime(667): at java.lang.reflect.Method.invokeNative(Native Method) 
12-19 03:03:02.275: E/AndroidRuntime(667): at java.lang.reflect.Method.invoke(Method.java:511) 
12-19 03:03:02.275: E/AndroidRuntime(667): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-19 03:03:02.275: E/AndroidRuntime(667): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-19 03:03:02.275: E/AndroidRuntime(667): at dalvik.system.NativeStart.main(Native Method) 
12-19 03:03:02.275: E/AndroidRuntime(667): Caused by: java.lang.reflect.InvocationTargetException 
12-19 03:03:02.275: E/AndroidRuntime(667): at java.lang.reflect.Method.invokeNative(Native Method) 
12-19 03:03:02.275: E/AndroidRuntime(667): at java.lang.reflect.Method.invoke(Method.java:511) 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.view.View$1.onClick(View.java:3034) 
12-19 03:03:02.275: E/AndroidRuntime(667): ... 11 more 
12-19 03:03:02.275: E/AndroidRuntime(667): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x4 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.content.res.Resources.getText(Resources.java:247) 
12-19 03:03:02.275: E/AndroidRuntime(667): at android.widget.TextView.setText(TextView.java:3428) 
12-19 03:03:02.275: E/AndroidRuntime(667): at Mushroom.Pickers.Note.Mushy.Compute_data(Mushy.java:29) 
12-19 03:03:02.275: E/AndroidRuntime(667): ... 14 more 
12-19 03:03:02.475: D/dalvikvm(667): GC_CONCURRENT freed 230K, 4% free 10426K/10759K, paused 6ms+14ms 
+0

пожалуйста, вы можете опубликовать ваш логарифм? –

+0

извините, как я могу опубликовать его здесь, его в таблице, я думаю, –

+0

@ user1105087: просто скопируйте logcat как есть (из его таблицы) и просто вставьте его здесь. Вам не нужно ничего изменять, чтобы получить его в формат. – Hiral

ответ

3

Проблема:

test_time.setText(value) были переопределены методы обоих int и String параметров.

  • параметр указывает, что вы пройдете String идентификатор ресурса. (т. е. R.string.any_string)
  • String параметр указывает, что вы пройдете String.

Вы проходили часы как int not as String.

Решение:

вы convet INT в строку, чтобы установить в качестве текста любого View (т.е. Button, TextView, EditText) Измените код, как показано ниже:

public void Compute_data(View view) { 
    //.... 
    //here is rest of your code 
    EditText test_time = (EditText)findViewById(R.id.editText43); 
    test_time.setText(String.valueOf(Hours));//<<<------consider this change 
} 
+0

это помогает, спасибо многому человеку. Btw, как я могу изменить свой usernam, этот userxxx сосет lolzz –

+0

@MaxiVu назовите свое имя сверху. В вашем профиле на верхней кнопке _unanswered_ есть кнопка _Edit_. Нажмите, чтобы изменить свой профиль. – gideon

+0

@gideon: звуки он изменил свое имя от userXXXXX до MaxiVu –

0

Вы не вызываете метод compute_data() в любом месте onCreate(), и даже если вы его назовете, это не будет ограничено нажатием кнопки click.and, это даст вам ошибку, когда вы передадите представление на него, поскольку у вас нет принято кнопку there.instead попробовать это:

public class Mushy extends Activity { 

    Button button; 
    EditText start_time; 
    EditText test_time; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     button=(Button)findViewById(R.id.Button1); 
     start_time = (EditText)findViewById(R.id.editText26) ; 
     test_time = (EditText)findViewById(R.id.editText43); 

     button.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0){ 

       compute_data(); 
      } 
     });  
    } 

    public void compute_data() {  

    //Perform calculation  

     test_time.setText(start_time.getText().toString()); // puts value of 1st EditText into 2nd 
    } 
} 
+0

Фактически я включил в xml-скрипт кнопки android: onClick = "Compute_data" –

+0

@Maxi Vu: ну, это тоже путь! – Hiral

+0

Вопрос любопытного, каков способ вывода десятичного числа (float) в edittext –