当前位置: 移动技术网 > IT编程>移动开发>Android > Android中两个Activity之间数据传递及返回问题

Android中两个Activity之间数据传递及返回问题

2019年07月24日  | 移动技术网IT编程  | 我要评论

落笔成婚txt,黄金持仓,佛山嘉邦郭斌

下面通过一个例子来详细说明

先上代码,再细细分析

mainactivity

public class mainactivity extends activity 
{ 
  private button mainbtn=null; 
  private final static int request_code=1; 
   
  /** called when the activity is first created. */ 
  @override 
  public void oncreate(bundle savedinstancestate) 
  { 
    super.oncreate(savedinstancestate); 
    setcontentview(r.layout.main); 
    mainbtn=(button)findviewbyid(r.id.mainbtn); 
    mainbtn.setonclicklistener(listener); 
  } 
   
  private onclicklistener listener=new onclicklistener() 
  { 
    @override 
    public void onclick(view v) 
    { 
      intent intent=new intent(); 
      intent.setclass(mainactivity.this, secondactivity.class); 
      intent.putextra("str", "intent demo"); 
      startactivityforresult(intent, request_code); 
       
    } 
     
  }; 
 
  @override 
  protected void onactivityresult(int requestcode, int resultcode, intent data) 
  { 
    if (requestcode==request_code) 
    { 
      if (resultcode==secondactivity.result_code) 
      { 
        bundle bundle=data.getextras(); 
        string str=bundle.getstring("back"); 
        toast.maketext(mainactivity.this, str, toast.length_long).show(); 
      } 
    } 
  } 
   
   
} 

由mainactivity 通过最简单的intent.putextra方法,将参数传入,也可以用bundle传入参数,

bundle bundle = new bundle(); 
bundle.putstring("str", "intent demo");
intent.putextras(bundle);

若需要获得返回值,则用startactivityforresult(),并需要知道返回的一个result_code(int类型),可以理解为指针,用intent.setclass() 确定传递给那个类(这里包括activity、service等)。第二个activity---本例中的secondactivity ,用intent intent=getintent();bundle bundle=intent.getextras();string str=bundle.getstring("str");获得前一个activity传来的参数,这里还需要返回给mainactivity参数,用到了setresult(result_code, intent); 这里 要说明的是result_code必须与前一个activity一致,否则就不能正常返回。而第一个mainactivity通过重写onactivityresult()来取得相应的返回值。

若不需要返回,可以直接用startactivity()。

secondactivity

public class secondactivity extends activity 
{ 
  public final static int result_code=1; 
  private textview secondtxt; 
  private button secondbtn; 
   
  @override 
  protected void oncreate(bundle savedinstancestate) 
  { 
    super.oncreate(savedinstancestate); 
    setcontentview(r.layout.second); 
    intent intent=getintent(); 
    bundle bundle=intent.getextras(); 
    string str=bundle.getstring("str"); 
    secondtxt=(textview)findviewbyid(r.id.secondtxt); 
    secondtxt.settext(str); 
     
    secondbtn=(button)findviewbyid(r.id.secondbtn); 
    secondbtn.setonclicklistener(listener); 
     
  } 
   
  private onclicklistener listener=new onclicklistener() 
  { 
    @override 
    public void onclick(view v) 
    { 
      intent intent=new intent(); 
      intent.putextra("back", "back data"); 
      setresult(result_code, intent); 
      finish(); 
    } 
     
  }; 
} 

 对于初学者,还得提醒一下,别忘记在androidmanifest.xml添加secondactivity类

<activity android:name=".secondactivity" 
     android:label="@string/app_name"> 
</activity> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网