Android Activity之間進行參數傳遞的三種方式

jopen 9年前發布 | 3K 次閱讀 Java Android

1.使用Intent進行傳輸

    //發送數據的Activity
class button implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String ET_1String = ET_1.getText().toString(); //得到文本輸入框中的文本
String ET_2String = ET_2.getText().toString();
Intent intent = new Intent();
intent.putExtra("one",ET_1String); //進行參數的傳遞(“參數名字”,參數)
intent.putExtra("two",ET_2String);
intent.setClass(MainActivity.this, result.class);
MainActivity.this.startActivity(intent);
}
}

//接收數據的Activity  
  public class result extends Activity{  
private TextView resulTextView;                           
@Override  
protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.result);  
        resulTextView = (TextView)findViewById(R.id.TV_1);  
        Intent intent = getIntent();                        //定義接收數據的Intent  
        String oneString = intent.getStringExtra("one");  
        String twoString = intent.getStringExtra("two");  
        int a = Integer.parseInt(oneString);                //進行計算之前要進行強制類型轉換  
        int b = Integer.parseInt(twoString);  
        int c = a * b;  
        resulTextView.setText(c + "");                      //要加一個空字符對int類型進行強制類型轉換  
    }  
}  </pre> 


2.使用靜態變量進行傳遞

    1.主界面(發送數據的Activity)

class ButtonListener implements android.view.View.OnClickListener{  
        @Override  
        public void onClick(View arg0) {  
            // TODO Auto-generated method stub  
            Intent intent = new Intent();  
            intent.setClass(MainActivity.this, OtherActivity.class);  
            OtherActivity.nameString = "zhao";  
            startActivity(intent);  
        }  
    }  

2.接受數據Activity  

    public class OtherActivity extends Activity{  
    //定義靜態變量  
    public static String nameString;  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.otheractivity);  
        System.out.println("nameString-------->"+nameString);  
    }  
}  </pre> 


3.利用setResult進行數據傳輸

    //1.要關閉的頁面
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.otheractivity);
Intent intent = this.getIntent();
intent.putExtra("tel", 12345);
//設置requestCode和帶有數據的intent對象
OtherActivity.this.setResult(3, intent);
//馬上關閉Activity
this.finish();
}

//2.上面的頁面關閉時,此頁面進行數據的接收  
class ButtonListener implements android.view.View.OnClickListener{  
    @Override  
    public void onClick(View arg0) {  
        Intent intent = new Intent();  
        intent.setClass(MainActivity.this, OtherActivity.class);  
        //與普通的start方法不同,需要設置requestCode  
        startActivityForResult(intent, 1);  
    }  
}  

//如果要進行此操作,需要在數據接收頁面中復寫activity的onActivityResul()方法  
@Override  
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);  
    int tel = 0;  
    //根據返回碼resultCode來判斷下一步進行的業務代碼  
    if(resultCode==3){  
        tel = data.getIntExtra("tel", 0);  
    }  
    Log.i(TAG, "tel--------->"+String.valueOf(tel));  
}  </pre> 


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!