欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-22 20:22:16
下面通过一个例子来详细说明 先上代码,再细细分析 mainactivity public class mainactivity extends activ...

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

先上代码,再细细分析

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> 

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

上一篇:

下一篇: