কম্পিউটার

অ্যান্ড্রয়েডে এক ফ্র্যাগমেন্ট থেকে অন্য ফ্র্যাগমেন্টে ডেটা কীভাবে পাঠাবেন?


এই উদাহরণটি দেখায় যে আমি কীভাবে SD কার্ডে একটি ফোল্ডার/ফাইলে লেখার জন্য Android অনুমতি সেট করব৷

ধাপ 1 − অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করুন, ফাইল ⇒ নতুন প্রকল্পে যান এবং একটি নতুন প্রকল্প তৈরি করতে সমস্ত প্রয়োজনীয় বিবরণ পূরণ করুন৷

ধাপ 2 − res/layout/activity_main.xml-এ নিম্নলিখিত কোড যোগ করুন।

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:app="https://schemas.android.com/apk/res-auto"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
   <androidx.viewpager.widget.ViewPager
      android:id="@+id/viewPager"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:layout_behavior="@string/appbar_scrolling_view_behavior" />
   <com.google.android.material.appbar.AppBarLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:theme="@style/AppTheme">
   <com.google.android.material.tabs.TabLayout
      android:id="@+id/tabLayout"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:tabGravity="fill"
      app:tabMode="fixed" />
   </com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

ধাপ 3 − দুটি খণ্ড লেআউট তৈরি করুন এবং নিচে দেওয়া কোডটি যোগ করুন −

FragmentOne.java

import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
public class FragmentOne extends Fragment {
   private SendMessage sendMessage;
   public FragmentOne() {
   }
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
      return inflater.inflate(R.layout.fragment_fragment_one, container, false);
   }
   @Override
   public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
      super.onViewCreated(view, savedInstanceState);
      Button btnPassData = view.findViewById(R.id.btnPassData);
      final EditText inData = view.findViewById(R.id.passMessage);
      btnPassData.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            sendMessage.sendData(inData.getText().toString().trim());
         }
      });
   }
   interface SendMessage {
      void sendData(String message);
   }
   @Override
   public void onAttach(@NonNull Context context) {
      super.onAttach(context);
      try {
         sendMessage = (SendMessage) getActivity();
      }
       catch (ClassCastException e) {
         throw new ClassCastException("Error in retrieving data. Please try again");
      }
   }
}

Fragment_fragment_one.xml −

<ScrollView xmlns:android="https://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:fillViewport="true">
   <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
   <EditText
      android:id="@+id/passMessage"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_above="@+id/btnPassData"
      android:layout_margin="16dp"
      android:hint="Enter here" />
   <Button
      android:id="@+id/btnPassData"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:text="PASS DATA TO FRAGMENT TWO" />
   </RelativeLayout>
</ScrollView>

FragmentTwo.java -

import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class FragmentTwo extends Fragment {
   private TextView textView;
   public FragmentTwo() {
   }
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
      return inflater.inflate(R.layout.fragment_fragment_two, container, false);
   }
   @Override
   public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
      super.onViewCreated(view, savedInstanceState);
      textView = view.findViewById(R.id.txtData);
   }
   void displayReceivedData(String message) {
      textView.setText("Data received: " + message);
   }
}

Fragment_fragment_two.xml −

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
   tools:context=".FragmentTwo">
   <TextView
      android:id="@+id/txtData"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textSize="20sp"
      android:textStyle="bold"
      android:layout_centerInParent="true"
      android:text="No data received" />
</RelativeLayout>

পদক্ষেপ 4৷ − src/MainActivity.java

-এ নিম্নলিখিত কোড যোগ করুন
package app.com.sample;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import com.google.android.material.tabs.TabLayout;
public class MainActivity extends AppCompatActivity implements FragmentOne.SendMessage{
   TabLayout tabLayout;
   ViewPager viewPager;
   ViewPagerAdapter viewPagerAdapter;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      viewPager = findViewById(R.id.viewPager);
      viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
      viewPager.setAdapter(viewPagerAdapter);
      tabLayout = findViewById(R.id.tabLayout);
      tabLayout.setupWithViewPager(viewPager);
   }
   @Override
   public void sendData(String message) {
      String tag = "android:switcher:" + R.id.viewPager + ":" + 1;
      FragmentTwo f = (FragmentTwo) getSupportFragmentManager().findFragmentByTag(tag);
      f.displayReceivedData(message);
   }
}

ধাপ 5 − androidManifest.xml

-এ নিম্নলিখিত কোড যোগ করুন
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা যাক. আমি ধরে নিচ্ছি আপনি আপনার কম্পিউটারের সাথে আপনার আসল অ্যান্ড্রয়েড মোবাইল ডিভাইসটি সংযুক্ত করেছেন৷ অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি চালাতে, আপনার প্রোজেক্টের অ্যাক্টিভিটি ফাইলগুলির একটি খুলুন এবং টুলবার থেকে রান আইকনে ক্লিক করুন। একটি বিকল্প হিসাবে আপনার মোবাইল ডিভাইস নির্বাচন করুন এবং তারপরে আপনার মোবাইল ডিভাইসটি পরীক্ষা করুন যা আপনার ডিফল্ট স্ক্রীন প্রদর্শন করবে -

অ্যান্ড্রয়েডে এক ফ্র্যাগমেন্ট থেকে অন্য ফ্র্যাগমেন্টে ডেটা কীভাবে পাঠাবেন?


  1. অ্যান্ড্রয়েডে কীভাবে একটি স্ট্রিং একটি কার্যকলাপ থেকে অন্যটিতে পাস করবেন?

  2. অ্যান্ড্রয়েডে কীভাবে একটি বস্তুকে এক কার্যকলাপ থেকে অন্যটিতে প্রেরণ করবেন?

  3. ইন্টেন্টস ব্যবহার করে কীভাবে একটি বস্তুর একটি অ্যান্ড্রয়েড কার্যকলাপ অন্যটিতে পাঠাবেন?

  4. অ্যান্ড্রয়েডে একটি কার্যকলাপ থেকে অন্য একটি কার্যকলাপ কিভাবে একটি ইমেজ পাস?