当前位置:操作系统 > 安卓/Android >>

个人解读Activity之三

这一节,我们讨论启动Activities并获取结果这个议题。不知道大家还记不记得,在上一节中我们已经实现了在一个Activity中启动另一个Activity,但是仅仅是调用了startActivity()这个方法来启动,之后就没管了,但是我们试想一下,假如你要从一个电话簿中选取一个联系人记录,然后在创建一个新的Activity来显示这个记录的详细信息,这就涉及到第二个Activity必须知道用户再第一个Activity中选中了哪一条记录,这就涉及到了两个Activities之间传递数据,像这种情况是时常遇到的!
      我们这里也用一个例子来实现我们的设想:在第一个Activity上面显示一个列表视图,显示几条记录!然后为每个条目设置易做图,但单击任何条目时候,在第二个Activity上面显示我们之前选中条目的详细信息!
      第一步:新建一个工程:ActivityRes;
      第二步:修改ActivityRes.java文件,如下所示:
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        //setContentView(R.layout.main);  
         
        String[] str = {"WuHan", "QingDao", "YuCi"}; 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.易做图_list_item_1,str); 
        setListAdapter(adapter); 
    } 
     
    @Override 
    protected void onListItemClick (ListView l, View v, int position, long id) 
    { 
        super.onListItemClick(l, v, position, id); 
        switch(position) 
        { 
        case 0: 
            Bundle bundle = new Bundle(); 
            bundle.putString("name", "WuHan"); 
            bundle.putString("school", "XXX"); 
            bundle.putString("student", "XXX"); 
            Intent intent = new Intent(ResultActivity.this, SecondActivity.class); 
            intent.putExtras(bundle); 
            startActivity(intent); 
        } 
    } 
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
       
        String[] str = {"WuHan", "QingDao", "YuCi"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.易做图_list_item_1,str);
        setListAdapter(adapter);
    }
   
    @Override
    protected void onListItemClick (ListView l, View v, int position, long id)
    {
     super.onListItemClick(l, v, position, id);
     switch(position)
     { www.zzzyk.com
     case 0:
      Bundle bundle = new Bundle();
      bundle.putString("name", "WuHan");
      bundle.putString("school", "XXX");
      bundle.putString("student", "XXX");
      Intent intent = new Intent(ResultActivity.this, SecondActivity.class);
      intent.putExtras(bundle);
      startActivity(intent);
     }
    }        第三步:创建第二个activity:SecondActivity,代码如下:
private TextView TextView01; 
   /** Called when the activity is first created. */ 
   @Override 
   public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main); 
       TextView01 = (TextView)findViewById(R.id.TextView01); 
       Intent intent = this.getIntent(); 
       Bundle bundle = intent.getExtras(); 
       TextView01.setText(bundle.getString("name")+":"+bundle.getString("school")+":"+bundle.getString("student")); 
 
   } 
 private TextView TextView01;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView01 = (TextView)findViewById(R.id.TextView01);
        Intent intent = this.getIntent();
        Bundle bundle = intent.getExtras();
        TextView01.setText(bundle.getString("name")+":"+bundle.getString("school")+":"+bundle.getString("student"));

    }         第四步:运行应用程序,可以看到如下结果:
  
       以上是两个Activity之间的数据传输,再来看看关于获取结果!
       有的时候,可能需要从启动的activity中获取一个结果。在这种情况下,我们应该调用startActivityForResult方法来启动activity而不是之前使用的startActivity()方法。为了从随后启动的Activity中获取到结果,我们必须完成onActivityResult()这个回调函数。当指定的activity启动完成后,他将会通过一个Intent对象返回一个结果到onActivityResult()方法中。
例如:我们需要从联系人中获取一条记录,以至于我们可以对这条记录进行其他的一些操作,我们可以像下面这样创建一个返回结果的Intent并且处理这个返回的结果!
    private void pickContact() { 
    // Create an intent to "pick" a contact, as defined by the content provider URI  
    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI); 
   

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,