2016-05-25 1 views
0

あるアクティビティから別のアクティビティに整数を渡そうとすると、アプリケーションがクラッシュします。 すべて正常に動作します。方法と新しい活性化を開始する。 ここに私のコードです:アクティビティ間で整数を渡す方法は?

import android.content.Intent; 
import android.os.Bundle; 


public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if (android.os.Build.VERSION.SDK_INT > 9) { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
    } 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 


public int URLi() { 
. 
./code 
. 
. 
. 
    return celsius; 
} 

public void onclick (View v) { 
    int temp=URLi(v); 
    Intent intent = new Intent(this, TheTemp.class); 
    intent.putExtra("temp",temp); 
    startActivity(intent); 
} 

}

public class TheTemp extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_the_temp); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
} 

Intent intent = getIntent(); 
int receiveValue = getIntent().getIntExtra("temp",0); 

}

マニフェスト新しい活動

<?xml version="1.0" encoding="utf-8"?> 

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 

      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".TheTemp" 
     android:label="@string/title_activity_the_temp" 
     android:theme="@style/AppTheme.NoActionBar"></activity> 
</application> 

と私は取得エラー:

05-25 16:05:01.047 11632-11632/com.example.owner.MYproject E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.owner.MYproject, PID: 11632 
                      java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.Owner.MYproject/com.example.Owner.Myproject.TheTemp}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getIntExtra(java.lang.String, int)' on a null object reference 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2282) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2439) 
                       at android.app.ActivityThread.access$800(ActivityThread.java:162) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1348) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:135) 
                       at android.app.ActivityThread.main(ActivityThread.java:5421) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 

はあなたの助けに感謝します!

答えて

0

onCreate()メソッド内の値を取得します。現在、メソッド外でフェッチしています。

public class TheTemp extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_the_temp); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    Intent intent = getIntent(); 
    int receiveValue = getIntent().getIntExtra("temp",0); 
} 
} 
+0

あなたは本当に私を助けてくれたので、あなたは本当に助けてくれました ありがとうございました。 btw、キャンバスにintを描画するガイドはありますか? – segev

+0

助けて嬉しいです:)将来の訪問者に役立つように答えを受け入れてください。 –

+0

緑色のVを右クリックしますか? – segev

関連する問題