❶ android中兩個activity怎麼實現數據傳輸
操作步驟如下:
1、創建Intent對象,並配置參數,有那個activity跳轉到哪個activity
❷ Android 中Activity之間怎麼傳遞資料庫中查詢得到的數據
可以的,Bundle它可以用key-value的形式存取數據,你可以把cursor中的數據存入bundle中,通過intent傳到下一個activity中
❸ android activity之間怎麼傳對象數據
StartActivity的時候將數據攜帶到Intent的bundle里,如果要攜帶自定義的對象,你自定義的對象要實現Serializable介面,就是在類里加一個implement Serializable。
然後
Intent intent = new Intent(this, Activity2);
Bundle bundle = new Bundle();
bundle.putSerializable("參數名", 自定義對象);
intent.putExtras(bundle);
startActivity(intent);
就可以把參數帶過去了,
取的時候用
getIntent().getSerializableExtra("參數名")
就可以取到你傳過來的對象了
強轉一下類型就能用了
❹ Android 從activityA跳轉傳值到activityB中 然後在B中把A的傳過來的數據保存到資料庫怎麼做
Intent intent = new Intent();
//用intent.putExtra(String name, String value);來傳遞參數。
intent.putExtra("one",number1);
intent.putExtra("two", number2);
intent.setClass(activity1.this, activity2.class);
startActivity(intent);
然後在activity2中
Intent intent1 = getIntent();
// 用intent1.getStringExtra()來得到activity1發過來的字元串。
String one = intent1.getStringExtra("one");
String two = intent1.getStringExtra("two");
然後在sql語句獲取值存儲。
❺ Android 頁面之間數據傳遞方式有幾種
對於依賴於操作系統的程序,客戶程序除了包含一個程序入口外,還需要和相關系統服務一起運行,以完成指定的任務。比如,Win32程序需要和GUI系統服務一起實現帶有可視窗口的功能;X
Window程序也需要和X
Window
Server一起實現窗口功能。
程序員需要在不同的Activity之間傳遞數據,然而,這個問題本身就有問題。所謂傳遞消息一般是指多個線程之間,而Activity本身並不是線程,ActivityThread才是一個線程,即UI線程。同一個程序中的多個Activity都由ActivityThread進行調用,Activity本身只是一個Java類而已,就像Rect、Trigle類一樣,如果有人問Rect類和Trigle類之間如何傳遞消息,你會不會覺得有點奇怪?
事實上,如果要在兩個類中傳遞數據,方法可以有很多。
方法一:可以先實例化某個類,獲得該類的引用,當其他類需要該對象的內部數據時,可以直接通過該引用去訪問該類的內部數據。
方法二:對於A、B兩個類之間,可以先實例化一個第三方類C,然後兩個類都可以把需要傳遞的數據存入C中,或從C中取出。
這些方法理論上都可以用在Activity類之間傳遞數據。然而,與普通類傳遞數據有所不同,普通類的實例化都是程序員顯式完成的,而Activity類的實例化卻是由Framework完成的,程序員只能使用startActivity()方法來告訴Framework去運行哪個Activity,這就意味著程序員不能得到Acitivity對象的引用,那麼就不能直接訪問該對象的內部數據。解決的辦法是使用Activity.getApplication()函數,該函數能夠返回一個Application對象,該Application對象在該程序中是唯一的,同一程序中的不同Activity調用該函數所返回的Application對象是相同的,該對象的名稱可以在AndroidManifest.xml中指定。一旦獲取了該Application對象,就可以藉助該對象,在不同的Activity之間傳遞數據。
除此之外,Framework本身也提供了標準的Activity之間傳遞數據的方法,即Intent類。該類作為startActivity()的參數,僅用於在啟動Activity時傳遞給目標Activity,同時,如果調用startActivityForResult(),目標Activity在結束後,也會返回一個Intent對象給原Activity。
另外,從設計理念的角度來看,Android認為,兩個Activity如果要共享數據,可以通過Preference
Storage或者文件、資料庫進行,同時,在一般情況下,設備上只會有一個Activity在運行,因此,多個Activity之間傳遞數據也不是必需的。
❻ 如何在Android開發中activity之間數據傳遞
用intent在activity之間傳遞數據,需要注意三個方法:
1.startActivityForResult(Intent intent, int requestCode)
2.setResult(int resultCode, Intent data)
3.onActivityResult(int requestCode, int resultCode, Intent data)
需要注意的是:
1.函數1在Activity_A裡面調用,然後啟動Activity_B(由intent參數決定啟動哪個activity);然後Activity_B執行完了之後,在finish()函數裡面調用函數2;此時返回Activity_A;最後在Activity_A裡面系統自動調用已經重載的函數3,Activity_A可以從該函數的第三個參數data裡面獲得想要的數據。
2.函數1有兩個參數,第二個參數確定請求碼;
3.函數3有三個參數:第一個參數請求碼,與函數1的第二個參數意義相同,用於確定是否是從Activity_B里獲得的返回值;第二個參數是結果碼,用於確定返回的結果是否可用;第三個參數是intent變數,用於傳遞數據。
❼ 關於android上面的Activity跳轉傳送數據的問題,請高手來指教
viewpager.setcurrentitem
表示切換當前的viewpager到指定界面,因為viewpager有緩存和回收機制,也就是說,默認情況下viewpager只會創建三個界面,因此跳過三個界面的時候,需要重新創建,所以導致空白。
解決方案就是:
viewpager.setoffscreenpagelimit(4);
表示四個界面來回切換不會重新創建,就會不出現空白了。
❽ 【Android 開發】 : Activity之間傳遞數據的幾種方式
1. 使用Intent來傳遞數據Intent表示意圖,很多時候我們都會利用Android的Intent來在各個Activity之間傳遞數據,這也是Android比較官方的一種數據傳遞的方式需求1:從一個Activity(IntentDemo)跳轉到另外一個Activity(Other),其中利用Intent來傳遞數據程序Demo如下:IntentDemo.javapackage com.android.intentdemo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class IntentDemo extends Activity { private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initComponent(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(IntentDemo.this, Other.class); // 在Intent中傳遞數據 intent.putExtra("name", "AHuier"); intent.putExtra("age", 22); intent.putExtra("address", "XiaMen"); // 啟動Intent startActivity(intent); } }); } private void initComponent() { button = (Button) findViewById(R.id.button); } } other.javapackage com.android.intentdemo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class Other extends Activity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); initComponent(); Intent intent = getIntent(); int age = intent.getIntExtra("age", 0); String name = intent.getStringExtra("name"); String address = intent.getStringExtra("address"); textView.setText("My age is " + age + "\n" + "My name is " + name + "\n" + "My address " + address); } private void initComponent() { textView = (TextView) findViewById(R.id.msg); } } ——>2. 在Activity之間使用靜態變數傳遞數據在上例中使用Intent可以很方便的在不同的Activity之間傳遞數據,這個也是官方推薦的方式,但是也有一定的局限性,就是Intent無法傳遞不能序列化的對象。我們可以使用靜態變數來解決這個問題。需求1:從一個Activity(IntentDemo)跳轉到另外一個Activity(Other),其中利用靜態變數來傳遞數據程序Demo:IntentDemo.java Intent intent = new Intent(); intent.setClass(IntentDemo.this, Other.class); Other.age = 22; Other.name = "AHuier"; Other.address = "XiaMen"; startActivity(intent); Other.java private TextView textView; public static int age; public static String name; public static String address; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); initComponent(); textView.setText("My age is " + age + "\n" + "My name is " + name + "\n" + "My address " + address); }——>3. 通剪切板傳遞數據 在Activity之間數據傳遞還可以利用一些技巧,不管是Windows還是Linux操作系統,都會支持一種剪切板的技術,也就是一個程序將一些數據復制到剪切板上,然後其他的任何程序都可以從剪切板中獲取數據。1) 利用剪切板傳遞普通的數據,如字元串 需求1:從一個Activity(IntentDemo)跳轉到另外一個Activity(Other),通過剪切板傳遞數據 程序Demo:IntentDemo.java ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); String name = "AHuier"; clipboardManager.setText(name); Intent intent = new Intent(IntentDemo.this, Other.class); startActivity(intent);Other.javaClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); String msgString = clipboardManager.getText().toString(); textView.setText(msgString);——> 1) 利用剪切板傳遞復雜的數據,如對象需求1:從一個Activity(IntentDemo)跳轉到另外一個Activity(Other),通過剪切板傳遞數據新建一個MyData.javapackage com.android.intentdemo; import java.io.Serializable; public class MyData implements Serializable { private String name; private int age; public MyData(String name, int age) { super(); this.name = name; this.age = age; } // 提供一個toString()方法 @Override public String toString() { return "MyData [name=" + name + ", 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; } } IntentDemo.java MyData myData = new MyData("AHuier", 22); //將對象轉換成字元串 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); String base64String = ""; try { ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); objectOutputStream.writeObject(myData); //使用Android中提供的 Base64 工具類,這個類主要是用來對對象進行壓縮也解碼的過程,使用默認方式 base64String = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT); objectOutputStream.close(); } catch (Exception e) { // TODO: handle exception } ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText(base64String); Intent intent = new Intent(IntentDemo.this, Other.class); startActivity(intent); Other.java ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); String msgString = clipboardManager.getText().toString(); //將字元串 msgString 還原為對象 byte[] base64_byte = Base64.decode(msgString, Base64.DEFAULT); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64_byte); try { ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); MyData myData = (MyData)objectInputStream.readObject(); textView.setText(myData.toString()); } catch (Exception e) { // TODO: handle exception }——>4.Intent中使用全局變數來傳遞數據需求1:從一個Activity(Main)跳轉到另外一個Activity(Other),通過全局變數來傳遞數據Main.javaprivate Button button; private MyApp myApp; ... myApp = (MyApp)getApplication(); myApp.setName("kunhuixu"); //修改之後的名稱 Intent intent = new Intent(Main.this, Other.class); startActivity(intent);Other.javaprivate MyApp myApp; private TextView textView; ... myApp = (MyApp)getApplication(); textView.setText("--- The app name ---" + myApp.getName());MyApp.javapackage com.android.intentglobal; import android.app.Application; /* * 查看Android官方文檔。 * Application 是所有那些需要維護全局application狀態的基類。你可以提供你自己的實現機制通過在在AndroidManifest.xml中提供你自己的需要聲明 * 的標記你自己的標簽。 * onCreate()方法是在應用程序啟動的時候被回調的。 ——>
❾ Android如何在Activity和Service之間傳遞數據
一個Android程序可以由多個Activity和Servier組成,在這些程序組件之間傳遞數據的方法有以下幾種,每種方法都有其特定的使用途徑。
1、原始數據類型:
在Activity/Servier之間傳遞臨時性的原始數據,可以使用Intent的putExtras方法來傳遞數據。若傳遞的數據需要長久保存,則使用SharedPreference類來完成。
2、傳遞對象。
當在Activity/Servier之間傳遞不需要長久保存的對象時,可以使用以下幾種途徑:
(1)通過Application類,每個Android應用程序都有一個Application類。當你在程序的AndroidManifest.xml中給Application設定一個名字時,你的程序中就必須有一個Application的子類。這個Application子類會被Android自動實例化,並且是一個全家性的類,它的生命周期和程序的生命周期相同,你可以把一些全局性的對象保存在Application類中。Application類可以通過getApplication()獲得。
(2 通過HashMap of WeakReferences傳遞對象。當一個Activity需要向另外一個Activity傳遞對象時,可以使用一個關鍵字把對象存在一個HashMap中,並把這個關鍵字通過Internt的Extras發給目標Activity,目標Activity接到該關鍵字後使用該關鍵字把對象沖HashMap中取出。