activity_send_args

来源:互联网 发布:乐器调音软件 编辑:程序博客网 时间:2024/06/13 05:02

简单的传递一个字符串

创建一个project android minsdk 4.0 blankActivity

  • mainxml中添加一个button @+id/btnStartAty

    <Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="启动另一个avtivity"    android:id="@+id/btnStartAty"    android:layout_alignParentTop="true"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true" />`
  • 在java中new 一个Acvtivity “TheAty “

      <TextView        android:text="hello"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tv"/>
  • 在mainActivity.java中 oncreat()方法添加

     findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent(MainActivity.this,TheAty.class);                i.putExtra("data","cby");                startActivity(i);            }        });
  • 在TheAty.java的 onCreate添加

    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_the_aty);        Intent i =getIntent();        tv = (TextView)findViewById(R.id.tv);        tv.setText(i.getStringExtra("data"));

在TheAty.java的 onCreate添加

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_the_aty);        Intent i =getIntent();        tv = (TextView)findViewById(R.id.tv);        tv.setText(i.getStringExtra("data"));

传递Bundle数据包

####在mainActivity中OnCreate下添加以下code

 findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent(MainActivity.this,TheAty.class);                Bundle b = new Bundle();                b.putString("name","cby");                b.putInt("age",2);                i.putExtras(b);                startActivity(i);            }        });

在TheAty添加code以显示Bundle数据

protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_the_aty);        Intent i =getIntent();        Bundle data = i.getExtras();        tv = (TextView)findViewById(R.id.tv);        tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age")));

传递值对象 ##

1.在java下新建一个User类 可以分别用 Serializable(简单)和Parcelable实现

        //public class User implements Serializable {        public class User implements Parcelable {            private  String name ;            private  int age;            public User(String name,int age){                this.name = name;                this.age = age;            }            public String getName() {                return name;            }            public void setName(String name) {                this.name = name;            }            public int getAge() {                return age;            }            public void setAge(int age) {                this.age = age;            }            @Override            public int describeContents() {                return 0;            }            @Override            public void writeToParcel(Parcel dest, int flags) {                dest.writeString(getName());                dest.writeInt(getAge());            }            public static final Creator<User> CREATOR = new Creator<User>() {                @Override                public User createFromParcel(Parcel source) {                    return new User(source.readString(),source.readInt());                }                @Override                public User[] newArray(int size) {                    return new User[size];                }            };        }

2.TheAty.java中加入

 protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_the_aty);        tv = (TextView)findViewById(R.id.tv);        Intent i =getIntent();//        Bundle data = i.getExtras();//        tv = (TextView)findViewById(R.id.tv);////        tv.setText(i.getStringExtra("data"));//        tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age")));//        User user = (User) i.getSerializableExtra("user");        User user = i.getParcelableExtra("user");        tv.setText(String.format("User info(name=%s,age=%d)",user.getName(),user.getAge()));

获取被启动的Ativity 的返回参数

1.首先在content_theAty.xml中添加一个button和输入的EditText

注:RelativeLayout改成vertical 的LinearLayout### <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/editText"        android:layout_gravity="center_horizontal" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="SendBack"        android:id="@+id/button"        android:layout_gravity="center_horizontal" />

2、在content_main.xml中加入一个textView接受返回的信息

<Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="启动另一个avtivity"        android:id="@+id/btnStartAty"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true" />    <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="new text"android:id="@+id/textView"/>    </LinearLayout>

3.在TheAty.java中添加

 private TextView tv; private EditText editText; editText=(EditText)findViewById(R.id.editText);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent();                i.putExtra("data",editText.getText().toString());                setResult(1, i);                finish();            }        });

4.add code in MainActivity.java

 @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView =(TextView) findViewById(R.id.textView);        findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent(MainActivity.this,TheAty.class);////                i.putExtra("data","cby");//                Bundle b = new Bundle();//                b.putString("name","cby");//                b.putInt("age",2);//                i.putExtras(b);                i.putExtra("user",new User("cby",2));//                startActivity(i);                startActivityForResult(i,0);            }        });        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);        setSupportActionBar(toolbar);        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);        fab.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)                        .setAction("Action", null).show();            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        textView.setText("另一个Activity返回的数据是"+data.getStringExtra("data"));    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}
0 0
原创粉丝点击