Android:无法将变量传递给第三个活动

Lor*_*nzo 0 android android-intent android-activity

我有三个活动:

  • 登录
  • 选择
  • 条目

我必须将var"Name"从登录传递给选择(并且这项工作很好)然后,从选择到输入,这就是我遇到问题的地方:/我可以将名称传递给选择,但是当我尝试传递它时进入,我不能!这很奇怪,因为如果我直接从登录到条目传递变量,它可以工作:/所以:

  • 登录 - >输入工作!
  • 登录 - >选择有效!
  • 选择 - >进入不起作用!

这是从登录到选择的代码

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);
Run Code Online (Sandbox Code Playgroud)

这是选择(可能是错误):

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);
}
Run Code Online (Sandbox Code Playgroud)

checkin是我点击按钮从选择到进入的方式时使用的方法.这就是我在Entry中取名的地方:

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);
Run Code Online (Sandbox Code Playgroud)

谢谢大家 :)

Ana*_*ari 5

您将值放在Intent对象中,然后创建了不同的Intent来启动上一个活动.

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
}
Run Code Online (Sandbox Code Playgroud)

改变这个::

 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);
Run Code Online (Sandbox Code Playgroud)

}