2012-05-04 6 views
0

に変数を渡すことはできません(そしてこの仕事はうまくいく)、選択から入門まで、そしてこれは私が問題を抱えている場所です:/私は選択肢に名前を渡すことができますが、それをエントリーに渡そうとすると私はできません!私は、エントリへのログインから直接変数を渡すためならば、それは奇妙だ、それが動作:だから/ :アンドロイド:私は、ログインからVAR "名" を渡す必要があり</li> </ul> <p></p> <ul> <li>ログイン</li> <li>選択</li> <li>エントリ:私は3つのアクティビティを持っている第三の活動

  • ログイン - >エントリは働きます!
  • ログイン - >選択作品!
  • 選択 - >エントリが機能しません!

これは、これは(おそらく誤りである場合)の選択をする選択肢へのログインから

Intent intent; 
String pkg=getPackageName();      
intent=new Intent(getApplicationContext(), scelta.class); 
//inseriamo i dati nell'intent 
String parts[] = risp.split("/"); 
intent.putExtra(pkg+".myNome", parts[0]); 
intent.putExtra(pkg+".myId", parts[1]); 
startActivity(intent); 

に合格するためのコードです:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.scelta);   
    // l'intent di questa activity 
    Intent intent=getIntent(); 
    String pkg=getPackageName(); 
    //prendiamo i dati 
    String nome=intent.getStringExtra(pkg+".myNome"); 
    String Id=intent.getStringExtra(pkg+".myId"); 
    intent.putExtra(pkg+".myNome", nome); 
    intent.putExtra(pkg+".myId", Id); 
    TextView tvNome = (TextView) findViewById(R.id.txtNome); 
    tvNome.setText(nome); 
}  

//pulsante per il checkin 
public void checkin (View v) { 
    // l'intent di questa activity 
    Intent intent=getIntent(); 
    String pkg=getPackageName(); 
    //prendiamo i dati 
    String nome=intent.getStringExtra(pkg+".myNome"); 
    String Id=intent.getStringExtra(pkg+".myId"); 
    //li reinseriamo nell'intent 
    intent.putExtra(pkg+".myNome", nome); 
    intent.putExtra(pkg+".myId", Id); 
    intent=new Intent(getApplicationContext(), entrata.class); 
    startActivity(intent); 
} 

チェックインは、私、私が使用する方法でありますボタンをタップして、選択から入力までをパスします。そして、私はエントリに名前を取るところである:誰も:)

答えて

5

Intent intent=getIntent(); // l'intent di questa activity 
String pkg=getPackageName(); 
String nome=intent.getStringExtra(pkg+".myNome"); //prendiamo i dati 

TextView tvNome = (TextView) findViewById(R.id.nome); 
tvNome.setText(nome); 

おかげで、あなたはインテントオブジェクトに値を入れている、とあなたはあなたの最後の活動を開始するために別の意図を作成しました。

public void checkin (View v){ 

    Intent intent=getIntent(); 
    //first intent you created. 

    String pkg=getPackageName(); 
    String nome=intent.getStringExtra(pkg+".myNome"); 
    String Id=intent.getStringExtra(pkg+".myId"); 
    intent.putExtra(pkg+".myNome", nome); 
    intent.putExtra(pkg+".myId", Id); 
//you are adding extra in first intent 
    intent=new Intent(getApplicationContext(), entrata.class); 
    // here you again recreated an Intent object second intent 
    startActivity(intent); 
// you are start activity using second intent which do not contain any extra 
} 

::

public void checkin (View v){ 

    Intent intent=getIntent(); 
    String pkg=getPackageName(); 
    String nome=intent.getStringExtra(pkg+".myNome"); 
    String Id=intent.getStringExtra(pkg+".myId"); 

    Intent intent1 = new Intent(getApplicationContext(), entrata.class); 
    intent1.putExtra(pkg+".myNome", nome); 
    intent1.putExtra(pkg+".myId", Id); 
    startActivity(intent); 

}

0

によって変更これは多分二回(のonCreateとチェックイン方法)エキストラを尋ねるとは何かを持っています。 onCreateメソッド内でのみエクストラを取得し、その値をインスタンス変数に格納することができます(これをインスタンス内のすべてのメソッドと共有するため)。次のようなものがあります。

public class choice extends Activity { 
    private String nome; 
    private String id;  //first letter lowercase in variables: Java conventions 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.scelta);   
    // l'intent di questa activity 
    Intent intent = getIntent(); 
    String pkg = getPackageName(); 
    //prendiamo i dati 
    this.nome=intent.getStringExtra(pkg+".myNome"); //this is now an instance variable 
    this.id=intent.getStringExtra(pkg+".myId");  //this is now an instance variable 
    intent.putExtra(pkg+".myNome", this.nome); 
    intent.putExtra(pkg+".myId", this.id); 
    TextView tvNome = (TextView) findViewById(R.id.txtNome); 
    tvNome.setText(this.nome); 
} 
//pulsante per il checkin 
public void checkin (View v){ 
    // l'intent di questa activity 
    //Intent intent=getIntent(); //NO NEED FOR THIS ANYMORE 
    //String pkg=getPackageName();//NO NEED FOR THIS ANYMORE 
    //prendiamo i dati 
    //String nome=intent.getStringExtra(pkg+".myNome"); //NO NEED FOR THIS ANYMORE 
    //String Id=intent.getStringExtra(pkg+".myId"); //NO NEED FOR THIS ANYMORE 
    //li reinseriamo nell'intent 

    intent=new Intent(getApplicationContext(), entrata.class); 
    intent.putExtra(pkg+".myNome", this.nome); 
    intent.putExtra(pkg+".myId", this.id); 

    startActivity(intent); 
} 
} 

もっと最適化されていると思います。 onCreateからnomeまたはidが変更されていない場合は、再度Extraを配置する必要はありません。そうであれば、おそらくonCreateは間違った場所です。putExtra

2

また、これにSharedPreferencesを使用することもできます。アクティビティにSharedPreferencesオブジェクトを定義します。 LoginActivityに必要なデータを置きます。 SharedPreferencesからのデータは、それぞれの活動にオブジェクトを取得しますが好き:

ログイン・アクティビティーで:他の活動に

SharedPreferences preferences = getSharedPreferences("preferences", MODE_WORLD_WRITEABLE); 
preferences.edit().putString("MY_NOME",this.nome).commit(); 
preferences.edit().putString("MY_ID",this.id).commit(); 

SharedPreferences preferences = getSharedPreferences("preferences", MODE_WORLD_WRITEABLE); 
String myNome = preferences.getString("MY_NOME", null); 
String myId = preferences.getString("MY_ID", null); 
関連する問題

 関連する問題