2017-01-21 5 views
0

activity_main.xmlに動作していないアプリ残念ながら通貨コンバータの

package com.example.shara.currencyconvertor; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

    private TextView txt = (TextView) findViewById(R.id.textView3); 
    private RadioGroup grp1 = (RadioGroup) findViewById(R.id.radioGroup2); 
    private RadioGroup grp2 = (RadioGroup) findViewById(R.id.radioGroup3); 


    private EditText inputAmt = (EditText) findViewById(R.id.inputAmount); 
    private final String inputText = inputAmt.getText().toString(); 
    private double inputAmount = Integer.parseInt(inputText); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     findViewById(R.id.convertButton).setOnClickListener(this); 
     findViewById(R.id.clearButton).setOnClickListener(this); 

     grp1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       RadioButton btn = (RadioButton) findViewById(checkedId); 
      } 
     }); 

     grp2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       RadioButton btn2 = (RadioButton) findViewById(checkedId); 
      } 
     }); 
    } 

    @Override 
    public void onClick(View v) { 

     int radioId1 = grp1.getCheckedRadioButtonId(); 
     int radioId2 = grp2.getCheckedRadioButtonId(); 
     double result = 0; 

     if(v.getId()==R.id.convertButton){ 

      if(radioId1 == R.id.aud){ 
       if(radioId2 == R.id.usd){ 
        result = inputAmount*1.34; 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else if(radioId2 == R.id.gbp){ 
        result = inputAmount*(0.83/1.34); 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else { 
        Log.d("test", "nothing here"); 

       } 


      } 

      if(radioId1 == R.id.cad){ 
       if(radioId2 == R.id.usd){ 
        result = inputAmount*1.32; 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else if (radioId2 == R.id.gbp) { 
         result = inputAmount * (0.83/1.32); 
         Log.d("test", "Result is" + result); 
        txt.setText(""+result); 
        } 
       } 
       else { 
        Log.d("test", "nothing here"); 
       } 

      if(radioId1 == R.id.inr){ 
       if(radioId2 == R.id.usd){ 
        result = inputAmount*68.14; 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else if(radioId2 == R.id.gbp){ 
        result = inputAmount*(0.83/68.14); 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else { 
        Log.d("test", "nothing here"); 
       } 

      } 

     } 

     else if(v.getId()== R.id.clearButton){ 

     txt.setText(""); 
     } 
    } 
} 

をすべてが右のようだけれども、私は実行するためのアプリを取得することができませんし、アプリがクラッシュします。これを解決するための助けに感謝します。私はアンドロイドの初心者です。

01-21 17:42:56.229 6017-6017/? I/art: Late-enabling -Xcheck:jni 
    01-21 17:42:56.244 6017-6023/? E/art: Failed sending reply to debugger: Broken pipe 
    01-21 17:42:56.244 6017-6023/? I/art: Debugger is no longer active 
    01-21 17:42:56.278 6017-6017/? W/System: ClassLoader referenced unknown path: /data/app/com.example.shara.currencyconvertor-1/lib/x86 
    01-21 17:42:56.278 6017-6017/? I/InstantRun: Instant Run Runtime started. Android package is com.example.shara.currencyconvertor, real application class is null. 
    01-21 17:42:56.526 6017-6017/? W/System: ClassLoader referenced unknown path: /data/app/com.example.shara.currencyconvertor-1/lib/x86 
    01-21 17:42:56.556 6017-6017/? D/AndroidRuntime: Shutting down VM 
    01-21 17:42:56.556 6017-6017/? E/AndroidRuntime: FATAL EXCEPTION: main 
     Process: com.example.shara.currencyconvertor, PID: 6017 
     java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.shara.currencyconvertor/com.example.shara.currencyconvertor.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
      Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference 
      at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:120) 
      at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:151) 
      at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:31) 
      at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:55) 
      at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:33) 
      at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:203) 
      at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185) 
      at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:525) 
      at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:193) 
      at com.example.shara.currencyconvertor.MainActivity.<init>(MainActivity.java:15) 
      at java.lang.Class.newInstance(Native Method) 
      at android.app.Instrumentation.newActivity(Instrumentation.java:1067) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:148) 
      at android.app.ActivityThread.main(ActivityThread.java:5417) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     01-21 17:47:56.701 6017-6017/com.example.shara.currencyconvertor I/Process: Sending signal. PID: 6017 SIG: 9 



LogCat after making changes: 
01-21 18:33:57.523 11590-11590/? E/AndroidRuntime: FATAL EXCEPTION: main 
                Process: com.example.shara.currencyconvertor, PID: 11590 
                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.shara.currencyconvertor/com.example.shara.currencyconvertor.MainActivity}: java.lang.NumberFormatException: Invalid double: "" 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                 at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                 at android.os.Looper.loop(Looper.java:148) 
                 at android.app.ActivityThread.main(ActivityThread.java:5417) 
                 at java.lang.reflect.Method.invoke(Native Method) 
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                Caused by: java.lang.NumberFormatException: Invalid double: "" 
                 at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
                 at java.lang.StringToReal.parseDouble(StringToReal.java:267) 
                 at java.lang.Double.parseDouble(Double.java:301) 
                 at com.example.shara.currencyconvertor.MainActivity.onCreate(MainActivity.java:37) 
                 at android.app.Activity.performCreate(Activity.java:6237) 
                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
                 at android.app.ActivityThread.-wrap11(ActivityThread.java)  
                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
                 at android.os.Handler.dispatchMessage(Handler.java:102)  
                 at android.os.Looper.loop(Looper.java:148)  
                 at android.app.ActivityThread.main(ActivityThread.java:5417)  
                 at java.lang.reflect.Method.invoke(Native Method)  
                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
+0

'' - これが起こっている正確に理解するために私たちを助けることができる少し教えてくれる「...と、アプリがクラッシュします。」。詳細を教えてください。 –

+2

ログを共有することは役に立ちますか? –

+1

それは確かになります。 ? –

答えて

0

のonCreateがロードされている前に、ビューを初期化している:Logcatファイルを更新

。あなたがNullPointerExceptionを取得しているのは理にかなっています。

ここで変更をお試しください。すべてのビューは上部で宣言されていますが、OnCreateで初期化されています。 onCreateの中で宣言しない限り、 "inputText"は最終的なものではありません。

package com.example.shara.currencyconvertor; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

    private TextView txt; 
    private RadioGroup grp1; 
    private RadioGroup grp2; 


    private EditText inputAmt; 
    private String inputText; 
    private double inputAmount; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     findViewById(R.id.convertButton).setOnClickListener(this); 
     findViewById(R.id.clearButton).setOnClickListener(this); 

     txt = (TextView) findViewById(R.id.textView3); 
     grp1 = (RadioGroup) findViewById(R.id.radioGroup2); 
     grp2 = (RadioGroup) findViewById(R.id.radioGroup3); 


     inputAmt = (EditText) findViewById(R.id.inputAmount); 
     inputText = inputAmt.getText().toString(); 
     inputAmount = Integer.parseInt(inputText); 


     grp1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       RadioButton btn = (RadioButton) findViewById(checkedId); 
      } 
     }); 

     grp2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       RadioButton btn2 = (RadioButton) findViewById(checkedId); 
      } 
     }); 
    } 

    @Override 
    public void onClick(View v) { 

     int radioId1 = grp1.getCheckedRadioButtonId(); 
     int radioId2 = grp2.getCheckedRadioButtonId(); 
     double result = 0; 

     if(v.getId()==R.id.convertButton){ 

      if(radioId1 == R.id.aud){ 
       if(radioId2 == R.id.usd){ 
        result = inputAmount*1.34; 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else if(radioId2 == R.id.gbp){ 
        result = inputAmount*(0.83/1.34); 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else { 
        Log.d("test", "nothing here"); 

       } 


      } 

      if(radioId1 == R.id.cad){ 
       if(radioId2 == R.id.usd){ 
        result = inputAmount*1.32; 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else if (radioId2 == R.id.gbp) { 
        result = inputAmount * (0.83/1.32); 
        Log.d("test", "Result is" + result); 
        txt.setText(""+result); 
       } 
      } 
      else { 
       Log.d("test", "nothing here"); 
      } 

      if(radioId1 == R.id.inr){ 
       if(radioId2 == R.id.usd){ 
        result = inputAmount*68.14; 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else if(radioId2 == R.id.gbp){ 
        result = inputAmount*(0.83/68.14); 
        Log.d("test", "Result is" +result); 
        txt.setText(""+result); 
       } 
       else { 
        Log.d("test", "nothing here"); 
       } 

      } 

     } 

     else if(v.getId()== R.id.clearButton){ 

      txt.setText(""); 
     } 
    } 
} 

UPDATE:

申し訳ありませんが、私はちょうど今、XMLに気づきました。

EditTextが空のときに、その内容を解析する必要があります。あなたは何かを書いた後にそれを解析する必要があります。あなたがしたいボタンを追加していけない場合は、使用することができます。

inputAmt.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      inputText = inputAmt.getText().toString(); 
      inputAmount = Integer.parseInt(inputText); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 
+0

それでもエラー何:( –

+0

をクラッシュで更新 –

+1

は、ログの詳細 –