0

特定のクラスがデータにアクセスできるように、インテントを使用せずにデータを渡そうとしています。そこで、SharedPreferences を使用することにしました。コードを実行すると、Toast が End() メソッドに表示され、Start() メソッドで設定した URL が表示されます。トーストにはデフォルト メッセージが表示されますが、SharedPreferences に保存した URL は表示されません。

Start() メソッドのコードは次のとおりです。

import java.net.URI;
import java.net.URISyntaxException;

import android.content.Intent;
import android.content.SharedPreferences;
import android.app.Activity;
import android.widget.Toast;
import android.net.Uri;
import android.os.Bundle;

public class Start extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);
    String uriStr = "http://www.google.com";
    URI uri = null;

    try {
        uri = new URI(uriStr);
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    String trackUri = uri.toString();
    SharedPreferences sharedPref = getSharedPreferences("FileName", MODE_PRIVATE); 
    SharedPreferences.Editor prefEditor = sharedPref.edit(); 
    prefEditor.putString("track_uri", trackUri);
    prefEditor.commit();
    Intent intent = new Intent(getBaseContext(), End.class);
    startActivity(intent);
}

}

End() メソッドのコードは次のとおりです。

import java.net.URI;
import java.net.URISyntaxException;

import android.content.Context;
import android.content.SharedPreferences;
import android.app.Activity;
import android.widget.Toast;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;

public class End extends Activity { 
private Context mContext;

public End() { 
}

public End (Context context) { 
    mContext = context;
}

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);
    mContext = getApplicationContext();
    String trackUri = "Test";
    //SharedPreferences sharedPref = getSharedPreferences("FileName", MODE_PRIVATE); 
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(mContext);
    sharedPref.getString("track_uri", trackUri);
    Toast.makeText(getApplicationContext(), trackUri, Toast.LENGTH_LONG).show();
}
}

基本的に、私がやりたいことは、別のクラスからデータを追跡せずに取得し、別のクラスにできるときにインテントを使用して渡すことだけです。

私は何を間違っていますか?どんな助けでも大歓迎です。

4

1 に答える 1

1

Start交換中

SharedPreferences sharedPref = getSharedPreferences("FileName", MODE_PRIVATE); 

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);

編集:

今気づいた!trackUri 変数を設定していません。

sharedPref.getString("track_uri", trackUri);

する必要があります

trackUri = sharedPref.getString("track_uri", trackUri);

注: 単純に文字列を渡そうとする場合は、それを Start の Intent エクストラに追加できます。例えば

intent.putExtra("track_uri", trackUri);

次に、End で取得します。

String uriString = getIntent().getStringExtra("track_uri");
于 2013-04-24T22:13:20.853 に答える