2011-06-18 8 views
0

インテントを使用して2つのアクティビティ間でint値を転送しようとしていますが、アプリがクラッシュしています。私がデータの転送をコメントし、単純に意図を使用すると、すべてがうまくいくように見えます。私は何が間違っているかは分かりません。インテント間でデータを渡すと、アプリが「予期せず閉じられる」

アクティビティ1(HeartRateActivity):

//Imports 

public class HeartRateActivity extends Activity { 
/** Called when the activity is first created. */ 
Button nextActivity; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    nextActivity = (Button)findViewById(R.id.nextActivity); 

    nextActivity.setOnClickListener(new Button.OnClickListener(){ 

     @Override 
public void onClick(View v) { 
    Intent intent = new Intent(HeartRateActivity.this, NextActivity.class); 
    intent.putExtra("age", 2); 
    startActivity(intent); 
} 

    }); 

} 
} 

マイNextActivity.java

package com.heartRate; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 



public class NextActivity extends Activity { 
TextView display; 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.next); 
     int age = getIntent().getIntExtra("age", 0); 
     display = (TextView) findViewById(R.id.display); 
     display.setText(age); 
} 
} 

マイのAndroidManifest.xml:(HeartRateActivityによって使用される)

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.heartRate" android:versionCode="1" android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="7" /> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".HeartRateActivity" 
      android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" 
          /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".NextActivity" 
     android:label="@string/app_name" /> 
</application> 
</manifest> 

マイmain.xml

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
/> 
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:id="@+id/nextActivity" android:text="nextActivity"></Button> 
</LinearLayout> 

マイnext.xml(NextActivityによって使用される)と同様であり、私は問題thatsのだと思ういけない...:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
<TextView android:text="TextView" android:layout_width="wrap_content" 
android:layout_height="wrap_content" android:id="@+id/display"></TextView> 

</LinearLayout> 

私はこの問題を解決する上で助けをいただければ幸いです!

+0

LogCatを見て、ここに来ているという例外をコピーして貼り付けてください。 – kabuko

+0

エラー:スレッドのアタッチに失敗しました –

+0

完全なスタックトレースを入れてください。 – kabuko

答えて

-1

ちょうどので、私たちは、あなたが含ま送る活動中...

intent.putExtra("age", 2); 

、そして中...

int age = getIntent().getIntExtra("age", 0); 

を言っている、明確だありがとうアクティビティを受信すると、アプリケーションがクラッシュしたり、問題が発生したりしますか?そして、2つのステートメントを除外することによって、アプリケーションは正常に実行されますか?私はLogCatに何が表示されているのか不思議です。あなたがアプリケーションをクラッシュさせても、LogCatは終了の直前に何が起こっていたかに関するいくつかの項目を持っています。

+0

はい、情報を渡さないと正常に動作します。アプリは予期せず終了し、次の画面に移動しないと言います。 –

0

nextのレイアウトでR.id.displayが有効なTextViewであることを確認してください。

+0

06-18 03:46:21.749:INFO/ActivityManager(52):開始アクティビティ:Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10000000 cmp = com.heartRate /.HeartRateActivity} 06-18 03:46:21.779:DEBUG/AndroidRuntime(881):VMをシャットダウンする 06-18 03:46:21.788:DEBUG/dalvikvm(881):デーモンでないスレッドが終了するのを待っているDestroyJavaVM 06-18 03:46:21.788:エラー/ AndroidRuntime(881):エラー:スレッド接続が失敗しました 06-18 03:46:21.818:DEBUG/dalvikvm(881):DestroyJavaVMシャットダウンVM –

+0

06-18 03:46 :HeavWorkerスレッドがシャットダウンしました 06-18 03:46:21.838:DEBUG/jdwp(21718) 881):JDWPはネットをシャットダウンします... 06-18 03:46:21.838:INFO/dalvikvm(881):デバッガが切り離されました。オブジェクトレジストリに1つのエントリがありました 06-18 03:46:21.848:DEBUG/dalvikvm(881):VMクリーンアップ 06-18 03:46:21.899:DEBUG/dalvikvm(881):LinearAlloc 0x0 5242880(12 %)) –

+0

06-18 03:46:26.988:エラー/ AndroidRuntime(865):キャッチされていないハンドラ:キャッチされていない例外のためスレッドメインが終了しています 06-18 03:46:27.008:ERROR/AndroidRuntime(865):java.lang。 RuntimeException:アクティビティを開始できませんComponentInfo {com.heartRate/com.heartRate.NextActivity}:android.content.res.Resources $ NotFoundException:文字列リソースID#0x2 06-18 03:46:27.008:ERROR/AndroidRuntime(865) :android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 06-18 03:46:27.008:ERROR/AndroidRuntime(865):android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) –

3

は、パラメータとしてintを提供する場合、それはこの場合には、明らかに存在しない場合、リソースID、としてそれを使用しています

display.setText(Integer.toString(age)); 

display.setText(age); 

を交換してください。

1

ちょうどこのようにしてください。

display =(TextView)findViewById(R.id.display);

display.setText(Integer.toString(age));

と確かにそれは

+0

それは上記の私の答えと同じです... –

+0

はい、あなたは正しいですが、彼はそれについて何も答えませんでした。 – jazz

1

があなたのイドと意思先は、すべての[OK]をしなければならないことを確認してください動作します。

次に、ans startを初期化してからintentに移ります。 と入力して

intent.putExtra("age", Double); 

これを取得します。

double d = getIntent().getStringExtra("age"); 
関連する問題