安卓數據包的傳遞 Bundle


方法一:

1、新建一個project,建立兩個Activity,分別為MainActivity和Main2Activity

 

2、MainActivity創建一個按鈕,並設置其文本為:啟動下一個Activity。在Main2Activity里創建一個Textview,並設置好其id

 

3、在MainActivity里實現如下代碼:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //創建並實現一個監聽器
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //監聽器要做的事情
               Intent i=new Intent(MainActivity.this,Main2Activity.class);//MainActivity和Main2Ativity連接起來 允許他們之間傳遞數據
               // i.putExtra("data","nihao");//用putExtra把內容傳送到另一個Activity,名字是data,值是nihao

                Bundle b=new Bundle();
                b.putString("name","xiaohong");
                b.putInt("age",2);
                i.putExtras(b);//傳遞Bundle打包的數據

                startActivity(i);//啟動第二個activity並把i傳遞過去

            }
        });
    }
}

 

4、在Main2Activity里實現如下代碼:

public class Main2Activity extends AppCompatActivity {
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        Intent i=getIntent();//因為Mian2Activity是通過intend來啟動的,所以通過getIntend來獲取與這個Activity相關的數據
        Bundle data=i.getExtras();//獲取數據包

        tv=(TextView) findViewById(R.id.tv22);
        
      //  tv.setText(i.getStringExtra("data"));//因為MainActivity里通過putExtra傳遞時名字是data,值是nihao
        tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age")));//把數據包的數據展現出來
    }
}


5、運行效果如下:

在第一張Activity里有一個Button,

 

點擊第一張的Button,另一個Activity啟動,並出現傳送的數據包內容

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

方法二:

在MainActivity里實現如下代碼:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //創建並實現一個監聽器
        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //監聽器要做的事情
               Intent i=new Intent(MainActivity.this,Main2Activity.class);//MainActivity和Main2Ativity連接起來 允許他們之間傳遞數據
               // i.putExtra("data","nihao");//用putExtra把內容傳送到另一個Activity,名字是data,值是nihao

                Bundle b=new Bundle();
                b.putString("name","xiaohong");
                b.putInt("age",2);
                
              //  i.putExtras(b);//傳遞Bundle打包的數據 //方法一
                i.putExtra("data",b);//方法二:選擇putExtra中的一個可以直接傳遞Bundle的函數


                startActivity(i);//啟動第二個activity並把i傳遞過去

            }
        });
    }
}

注:putExtra中有一個可以直接傳遞Bundle的函數,下圖:

 

在Main2Activity里實現如下代碼:

public class Main2Activity extends AppCompatActivity {
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        Intent i=getIntent();//因為Mian2Activity是通過intend來啟動的,所以通過getIntend來獲取與這個Activity相關的數據
        
        //Bundle data=i.getExtras();//方法一:獲取數據包
        Bundle data=i.getBundleExtra("data");//方法二

        tv=(TextView) findViewById(R.id.tv22);

      //  tv.setText(i.getStringExtra("data"));//因為MainActivity里通過putExtra傳遞時名字是data,值是nihao
        tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age")));//把數據包的數據展現出來
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM