Android
 Computer >> コンピューター >  >> プログラミング >> Android

androidSerializableを使用してアクティビティ間でデータを渡す方法


シリアル化を使用すると、2つのアクティビティ間でオブジェクトの状態または配列を渡すことができます。コードに入る前に、シリアル化と、Androidで意図的にどのように機能するかを知っておく必要があります。

シリアル化はマーカーインターフェイスです。シリアル化を使用して、オブジェクトの状態をバイトストリームに変換できます。バイトストリームはプラットフォームに依存しないため、JVMやその他のプラットフォームで機能します。これは、2つのアクティビティ間でオブジェクトを送信する例です。

ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動し、新しいプロジェクトを作成するために必要なすべての詳細を入力します。

ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout
   xmlns:android = "https://schemas.android.com/apk/res/android" xmlns:tools = "https://schemas.android.com/tools" android:layout_width = "match_parent"
   android:layout_height = "match_parent">
<LinearLayout
   android:layout_width = "match_parent"
   android:layout_height = "wrap_content"
   android:gravity = "center_horizontal"
   android:orientation = "vertical">
   <EditText
      android:id = "@+id/name"
      android:layout_width = "match_parent"
      android:layout_height = "wrap_content"
      android:ems = "10"
      android:hint = "Enter a name"
      android:inputType = "text" />
   <EditText
      android:id = "@+id/phone"
      android:layout_width = "match_parent"
      android:layout_height = "wrap_content"
      android:ems = "10"
      android:hint = "Enter a Phone number"
      android:inputType = "number"/>
   <Button
      android:layout_width = "wrap_content"
      android:layout_height = "wrap_content"
      android:text = "Send data"
      android:id = "@+id/send"/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

ステップ2 −以下は、変更されたメインアクティビティファイルMainActivity.javaの内容です。このファイルには、基本的なライフサイクルメソッドのそれぞれを含めることができます。

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
   EditText name;
   EditText phone;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      name = findViewById(R.id.name);
      phone = findViewById(R.id.phone);
      Button send = findViewById(R.id.send);
      send.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            if (TextUtils.isEmpty(name.getText().toString()) && TextUtils.isEmpty(phone.getText().toString())) {
               Toast.makeText(MainActivity.this,"Something is wrong kindly check",Toast.LENGTH_LONG).show();
            }else{
sendUserData(name.getText().toString(),phone.getText().toString());
            }
         }
      });
   }
   private void sendUserData(String username, String userPhone) {
      Userinfo userinfo = new Userinfo();
      userinfo.setName(username);
      userinfo.setPhone(userPhone);
      Intent send = new Intent(MainActivity.this,SecondActivity.class);
      Bundle b = new Bundle();
      b.putSerializable("serialzable",userinfo);
      send.putExtras(b);
      startActivity(send);
   }
}

ステップ3 −以下は、変更されたメインアクティビティファイルSecondActivity.javaの内容です。このファイルには、基本的なライフサイクルメソッドのそれぞれを含めることができます。このアクティビティは、以下に示すようにMainActivityからオブジェクトにアクセスします-

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
   Userinfo userinfo;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_second);
      TextView data = findViewById(R.id.data);
      userinfo = (Userinfo) getIntent().getSerializableExtra("serialzable");
      String name = userinfo.getName();
      String phone = userinfo.getPhone();
      data.setText("Your entered name is "+name+" number is "+phone);
   }
   @Override
   protected void onPause() {
      super.onPause();
      userinfo = null;
   }
}

ステップ3 −以下は、シリアル化可能なUserinfoオブジェクトの内容です。 MainActivityとSecondActivityの間で受け渡すこのオブジェクトデータ。 Userinfoをシリアル化可能なオブジェクトにするには、 java.io.Serializableを実装する必要があります 以下に示すようなインターフェース-

import java.io.Serializable;
class Userinfo implements Serializable {
   String name;
   String phone;
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getPhone() {
      return phone;
   }
   public void setPhone(String phone) {
      this.phone = phone;
   }
}

アプリケーションを実行してみましょう。実際のAndroidモバイルデバイスをコンピューターに接続していると思います。 Android Studioからアプリを実行するには、プロジェクトのアクティビティファイルの1つを開き、[実行]をクリックします ツールバーのandroidSerializableを使用してアクティビティ間でデータを渡す方法 アイコン。オプションとしてモバイルデバイスを選択し、デフォルトの画面を表示するモバイルデバイスを確認します。

androidSerializableを使用してアクティビティ間でデータを渡す方法


androidSerializableを使用してアクティビティ間でデータを渡す方法

次に、[データの送信]ボタンをクリックすると、以下に示すようにSecondActivityに移動します-

androidSerializableを使用してアクティビティ間でデータを渡す方法

上記の出力では、MainActivityからSecondActivityへの情報を取得しました


  1. UbuntuでADBを使用してAndroidデータをバックアップする方法

    Androidでのアプリデータやテキストメッセージなどのバックアップは、非常に面倒で、場合によってはコストもかかる可能性があります。 Playストアの多くのアプリは、データをバックアップすることを約束していますが、ヒットしてミスしたり、腕と脚のコストがかかったりします。これを行うためのより良い方法があり、すべてをコンピューターで実行できることをご存知ですか? Androidには一連の開発ツールが付属しています。多くありますが、関心のある主要なアイテムはADB(またはAndroid Debug Bridge)として知られています。これにより、ユーザーは任意のAndroidデバイスに直接コマンド

  2. Android でデータをバインドする方法

    データ バインディングは、視覚的なユーザー入力要素に情報 (データ) を接着するときに使用する手法です。このプロセスでは、入力が更新されるたびに、その背後にあるデータも更新されます。 これは決して新しい概念ではなく、これを設計に組み込んだフレームワークが多数あります (AngularJS/React/Vue など)。 この記事で注目するのは、フロントエンド フレームワークではなく、モバイル開発です。 Google は、Android Jetpack の一部である Data Binding Library を Android に導入しました。 Jetpack ライブラリ スイートに慣れ