2017-02-23 8 views
0

私はJavaコーディングにあまり慣れていませんが、私は自分のアプリケーションを作りたかったのです。複数のクラスのSharedPreferences

私はSharedPreferencesを使用して、複数のチュートリアル(およびこのサイトの質問)に示されているように、さまざまなアクティビティ/クラスにいくつかの値を格納したいと思いますが、別のクラスの別のアクティビティ

ユーザーは、フィールドにID direction_1000を記入する必要があります。そのため、風向きはGetWindクラスから1000ftになります。

私はSharedPreferenceintとしてこの値を格納した場合、すべてが正常に動作しますが、私はintPHIStringphi経由クラスInputNavDataにこの値を渡し、そこにそれを表示したい場合は、私はこの奇妙な値を取得します。

誰かがこれを解決するのに手伝ってもらえますか?面倒なコードや質問は申し訳ありませんが、私が言ったように、それはすべて私にとって非常に新しいものです。

MainActivity

package com.example.navigationcalculator; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 

public class MainActivity extends Activity { 
public final static String EXTRA_MESSAGE = "com.example.navigationcalculator.MESSAGE"; 

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

/** Called when the user clicks the Agree button */ 
public void wind_input(View view) { 
    Intent intent = new Intent(this, GetWind.class); 
    startActivity(intent); 
} 

/** Called when the user clicks the Input Navigation Data button */ 
public void input_nav_data(View view) { 
    Intent intent = new Intent(this, InputNavData.class); 
    startActivity(intent); 
} 

/** Called when the user clicks the Calculate Data button */ 
public void calculate_data(View view) { 
    Intent intent = new Intent(this, CalculateData.class); 
    startActivity(intent); 
} 

} 

GetWind

package com.example.navigationcalculator; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.EditText; 

import static android.content.ContentValues.TAG; 
import static com.example.navigationcalculator.R.id.direction_1000; 

public class GetWind extends Activity { 

public static final String PREFS_NAME = "com.example.myfirstapp.sharedPref"; 

public final static String DIR_1000 = "com.example.myfirstapp.DIR_1000"; 
public final static String SPEED_1000 = "com.example.myfirstapp.SPEED_1000"; 



SharedPreferences sharedpreferences; 

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

} 

//Read all wind speeds and directions and put them in a shared preferences file 
public void input_nav_data(View view) { 
    Intent intent = new Intent(this, InputNavData.class); 

    sharedpreferences = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 

    startActivity(intent); 

    // 1000 feet 
    EditText dir_1000 = (EditText)findViewById(R.id.direction_1000); 
    int direction_1000 = Integer.parseInt(dir_1000.getText().toString()); 

    SharedPreferences.Editor editor = sharedpreferences.edit(); 

    editor.putInt(DIR_1000,direction_1000); 
    editor.commit(); 

    int shared_dir_1000 = sharedpreferences.getInt(PREFS_NAME,direction_1000); 
    String SD1000 = String.valueOf(shared_dir_1000); 
    Log.d("direction 1000",SD1000); 

} 
} 

InputNavData

package com.example.navigationcalculator; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.EditText; 

import static com.example.navigationcalculator.GetWind.PREFS_NAME; 
import static com.example.navigationcalculator.R.id.direction_1000; 



public class InputNavData extends Activity { 

public final static String altitude_static_string = "com.example.myfirstapp.altitude"; 

SharedPreferences sharedpreferences; 

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

} 

//Read all navigation data and pass them through as a string to activity CalculateData 
public void calculate_data(View view) { 
    Intent intent = new Intent(this, CalculateData.class); 

    sharedpreferences = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 

    startActivity(intent); 

    // Read the actual altitude 
    EditText alt = (EditText) findViewById(R.id.altitude); 
    int altitude = Integer.parseInt(alt.getText().toString()); 

    SharedPreferences.Editor editor = sharedpreferences.edit(); 

    editor.putInt(altitude_static_string,altitude); 
    editor.commit(); 

    int shared_altitude = sharedpreferences.getInt(PREFS_NAME,altitude); 
    String SALT = String.valueOf(shared_altitude); 
    Log.d("altitude",SALT); 

    int PHI = sharedpreferences.getInt(PREFS_NAME,direction_1000); 
    String phi = String.valueOf(PHI); 
    Log.d("dir 1000 in inputnavdata",phi); 
} 

} 
+0

int x = 0; intent.putExtra("xx", x); 

そしてにより、他のクラスでそれを得ます合格しようとしているあるアクティビティから別のアクティビティへのデータ? –

+0

はい、実際には、共有参照を介してアクティビティInputNavDataからアクティビティCalculateDataにデータ(direction_1000)を渡そうとします。 – Phil

+0

'SharedPreferences'を使用して、アクティビティのデータを別のものに渡すのではなく、' intent'を使ってデータを送ります。もし私があなたを助けることができない場合は –

答えて

0

あなたの01を見およびcalculate_dataの方法。

何の流れがあるべきだからです:

  1. する共有好みに共有好み内部
  2. ストア値を取得します。
  3. 何をやっている
  4. 開始アクティビティ

をコミット共有好み

  • 開始アクティビティ共有好み内部
  • ストア値を取得します

    1. です。
    2. ちょうどあなたが使用することができ、データを渡すために

    calculate_data

    public void calculate_data(View view) { 
    Intent intent = new Intent(this, CalculateData.class); 
    sharedpreferences = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); // Read the actual altitude 
    EditText alt = (EditText) findViewById(R.id.altitude); 
    int altitude = Integer.parseInt(alt.getText().toString()); 
    SharedPreferences.Editor editor = sharedpreferences.edit(); 
    editor.putInt(altitude_static_string, altitude); 
    editor.commit(); 
    int shared_altitude = sharedpreferences.getInt(PREFS_NAME, altitude); 
    String SALT = String.valueOf(shared_altitude); 
    Log.d("altitude", SALT); 
    int PHI = sharedpreferences.getInt(PREFS_NAME, direction_1000); 
    String phi = String.valueOf(PHI); 
    Log.d("dir 1000 in inputnavdata", phi); 
    } 
    
    startActivity(intent); 
    
  • +0

    私は最後にstartActivity(intent)を入れましたが、残念ながら結果は同じままです... 'import static com.example.navigationcalculator.R.id.direction_1000;で何かをしなければならないと思います。しかし、私は確信していません... – Phil

    0

    をコミット:あなたは

    Intent intent = getIntent(); 
    xy= intent.getIntExtra("xx",0); 
    
    関連する問題