android intent的跳轉,頁面傳值

在android中頁面的跳轉跟傳值是非常重要的內容,所以不會的同學還是要用點心去多打兩次。沒有什麼問題是打一遍代碼不能解決如果有的話,那就是n+1遍的問題。
首先我們去看一篇博客的時候,最好先看下博客有哪些你沒見過的知識點,然後邊看邊百度,不要看到博客裏面的內容沒見過,就覺得很難,開始煩躁沒有心情去慢慢看下去。
好,首先 我們要 知道 Intent Bundle OnActivityResult 的相關知識,才能更加輕鬆的看完。
 我們要實現的效果是 a 跳轉到b,在把內容傳到b界面。好,現在來開始寫我們的代碼了。(突然發現,不用黑體寫代碼,自己瞬間都變得萌萌噠了)。
首先我們來用Bundle實現兩個頁面之間的跳轉,A頁面跳轉到B頁面。
這是a頁面,當我們按鈕button的時候,進行跳轉到button頁面,並且將我們需要傳遞的東西,通過Bundle數據攜帶包通過key Value的形式來傳遞(就是一個鑰匙去開這把鎖)。
<strong>package com.example.bundle;

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {
   private Button button;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button) findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent=new Intent();</strong>
<strong>                                //這是數據攜帶包,後面的onActivityResult方式也會用到這種方式來進行值得傳遞
				Bundle bundle=new Bundle();
				bundle.putString("key", "value");
				intent.putExtras(bundle);</strong>
<strong>                                  //設置我們需要前往的頁面(本頁面,目標頁面)
				intent.setClass(MainActivity.this, activity.class);</strong>
<strong>                                 //啓動ac,將我們剛剛綁定數據的數據包放進去,等會頁面進行跳轉的時候,也會把他攜帶過去
				startActivity(intent);
			}
		});
    }


  
}</strong>
<strong>接下來我們看看 B頁面 他是如何進行數據的接受的。 其實說到底 也就是兩行代碼的時候 我們通過解包獲取數據 在把我們包裏面的東西放在textview上面顯示出來</strong>
<div><strong>package com.example.bundle;</strong></div><div><strong></strong>
</div><div><strong>import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;</strong></div><div><strong></strong>
</div><div><strong>public class activity  extends ActionBarActivity{
 private TextView textview1;
 protected void onCreate(@Nullable Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity2);
  textview1=(TextView) findViewById(R.id.textview1);</strong></div><div><strong> 
  Bundle myBundle=this.getIntent().getExtras();
  String myText=myBundle.getString("key");
  textview1.setText(myText);
 }
}</strong>
</div><strong></strong>
在我們寫頁面跳轉的時候千萬不要忘記在fest裏面經行配置activity哦
佈局很簡單我們就不把佈局貼出來 我在下面 會把那個demo的鏈接貼出來的。

下面我們開始用onActivityResult配合Bundle來進行我們的數據傳遞
還是實現一樣的功能從a跳轉到b並且傳遞內容。
a頁面代碼。我會故意把這裏的命名寫的很爛,這樣你們要看懂就需要更加用心的去看代碼了。嘻嘻。
package com.example.onactivityresult;

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {

    private EditText tet;
    private Button btn;
    private TextView view;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button) findViewById(R.id.btn);
        tet=(EditText) findViewById(R.id.tet);
        view=(TextView) findViewById(R.id.view);


        btn.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent intent=new Intent();
				
				String str= tet.getText().toString();
				intent.putExtra("textView_Name", str);
			   //設置啓動監聽返回值的activity,並請求請求碼 requestcode
				intent.setClass(MainActivity.this, sendActivity.class);
                                 //這個1 很關鍵,這是他們在同一條船上的標識,那邊接受數據 key 值要對 標識符要對,不然接收不到數據的
				startActivityForResult(intent, 1);
				
			}
		});
    }
            @Override
            //傳入請求碼,返回碼,intent
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            	// TODO Auto-generated method stub
            	if (requestCode==1&&resultCode==1) {
					Bundle bundle=data.getExtras();
					String strResult=bundle.getString("result");
					Toast.makeText(MainActivity.this, strResult, 1).show();
					
				}
            
            }
            //保存activity在onstop之前執行
            @Override
            protected void onSaveInstanceState(Bundle outState) {
            	// TODO Auto-generated method stub
            	super.onSaveInstanceState(outState);
            	String ContentString=tet.getText().toString();
            	outState.putString("sava", ContentString);
            	
            }

}

a跳轉到B頁面,b接受a傳遞過來的數據,大概代碼跟上面的bundle差不多就不再囉嗦寫註釋了
package com.example.onactivityresult;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class sendActivity extends Activity {
   private Button buttonContent;
   private TextView textViewContent;
   private EditText textContent;
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.secondactivity);
		buttonContent=(Button) findViewById(R.id.buttonContent);
		textViewContent=(TextView) findViewById(R.id.textViewContent);
	textContent=(EditText) findViewById(R.id.textContent);
	Intent intent=getIntent();
	Bundle bundle=intent.getExtras();
	String strContentString=bundle.getString("textView_Name");
	textViewContent.setText(strContentString);
	buttonContent.setOnClickListener(new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent =new Intent();
			intent.putExtra("sendActivity", textContent.getText().toString());
			setResult(1, intent);
			finish();
		}
	});
	}
 
     DEMO下載鏈接:Bundle跳轉傳值 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章