آموزش SQL Server
آموزش SQL Server – قسمت شانزدهم
خرداد ۱۴, ۱۳۹۵
آموزش برنامه نویسی اندروید
آموزش اندروید فصل دوم قسمت هشتم (آموزش fragment)
خرداد ۱۹, ۱۳۹۵
آموزش برنامه نویسی اندروید

آموزش برنامه نویسی اندروید

در قسمت چهاردهم آموزش اندروید مبحث در بازگرداندن نتایج از اینتنت را آموزش داده ایم حال در این آموزش مبحث ارسال دیتا با استفاده از شی اینتنت را که یکی دیگر از قابلیت های مهم برنامه نویسی اندروید میباشد را آموزش داده ایم.

آموزش اندروید فصل دوم قسمت هفتم – ارسال به اینتنت 

توجه : برای مشاهده تصاویر در سایز اصلی بر روی آنها کلیک کنید.

ارسال دیتا با استفاده از شی Intent

علاوه بر امکان دریافت دیتا که در آموزش قبل توضیح دادیم میتوان به یک اکتیویتی دیتا نیز ارسال کرد. برای مثال میتوان در مثال قبل یک متن پیش فرض در EditText قرار داد و میتوان برای انجام این کار از شی Intent جهت ارسال دیتا به اکتیویتی استفاده کرد.

در مثال زیر روش تبادل اطلاعات بین اکتیویتی ها را مشاهده کرد. پروژه جدیدی به نام PassingData ایجاد کرده و طبق کدنویسی زیر در فایل activity_main.xml یک Button یا دکمه ایجاد میکنیم

<Button

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Click to go to the second Activity"

android:onClick="onClick" />

حال در فولدر res/layout یک فایل جدید به نام secondactivity.xml ایجاد کرده و طبق کدنویسی زیر یک عبارت و یک دکمه تعیین میکنیم      

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="welcome to second Activity"

/>

<Button

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="click to return to main activity"

android:onClick="onClick2" />

</LinearLayout>

حال یک کلاس جدید به نام SecondActivity ایجاد کرده و محتویاتش را چنین کدنویسی میکنیم

package com.example.passingdata;

import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.view.View;

import android.widget.*;

public class SecondActivity extends Activity {

        @Override

        public void onCreate(Bundle savedInstanceState)

        {
             super.onCreate(savedInstanceState);

             setContentView(R.layout.secondactivity);

             //--get the data passed in using getStrigExtra()--

             Toast.makeText(this, getIntent().getStringExtra("str1"),

             Toast.LENGTH_SHORT).show();

             //--get the data passed in using getIntExtra--

             Toast.makeText(this, Integer.toString(getIntent().getIntExtra("age1", 0)),

             Toast.LENGTH_SHORT).show();

             //--get the Bundle passed in--

             Bundle b = getIntent().getExtras();

             //--get the data using the get String()--

             Toast.makeText(this, b.getString("str2"), Toast.LENGTH_SHORT).show();

             //--get the data using the getInt()--

             Toast.makeText(this, Integer.toString(b.getInt("age2")),

             Toast.LENGTH_SHORT).show();
        }

        public void onClick2(View v)

        {
             //--use an Intent object to return data--

             Intent i=new Intent();

             //--use the putExtra() method to return some value..--

             i.putExtra("age3", 45);

             //--use the setData() method to return some value--

             i.setData(Uri.parse("something passed back to main activity"));

             //--set the result with the OK and the Intent object--

             setResult(RESULT_OK,i);

             //--destroy the current activity--

             finish();
        }
}

قسمت های زیر را نیز به فایل MainActivity.java اضافه کنید

package com.example.passingdata;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Toast;

public class MainActivity extends Activity {

        @Override

        protected void onCreate(Bundle savedInstanceState) {

                 super.onCreate(savedInstanceState);

                 setContentView(R.layout.activity_main);
        }

        public void onClick(View v){

                 Intent i=new Intent("learn.PassingData.SecondActivity");

                 //--use putExtra() to add new name/value pairs--

                 i.putExtra("str1", "this is a string");

                 i.putExtra("age1", 25);

                 //--use a Bundle object to add new name/value pairs--

                 Bundle b=new Bundle();

                 b.putString("str2", "this is another string");

                 b.putInt("age2", 35);

                 //--attach the Bundle object to the Intent object--

                 i.putExtras(b);

                 //--start activity to get a result back--

                 startActivityForResult(i,1);
        }

        public void onActivityResult(int requestCode,int resultCode, Intent data)

        {

             //--check if the request code id 1--

             if(requestCode == 1){

                   //-- if the result is OK--

                   if(resultCode == RESULT_OK){

                        //--get the result using getIntExtra()--

                        Toast.makeText(this, Integer.toString(data.getIntExtra("age3", 0)),

                        Toast.LENGTH_SHORT).show();

                        //--get the result using getData()--

                        Toast.makeText(this, data.getData().toString(), Toast.LENGTH_SHORT).show();
                   }
             }
        }
}

حال باید در manifest پروژه نیز اکتیویتی ایجاد شده را معرفی کنیم پس درون فایل AndroidManifest.xml کدهای پررنگ شده زیر را اضافه میکنیم

<activity

android:name=".MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity

android:label="Second Activity"

android:name=".SecondActivity"

>

<intent-filter>

<action android:name="learn.PassingData.SecondActivity" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

حال میتوان برنامه را اجرا و نتیجه را مطابق شکل زیر مشاهده کرد

آموزش کاربردی اندروید-قسمت پانزدهم

روش کار

این برنامه مهمترین روش تبادل اطلاعات را نمایش میدهد.ابتدا میتوان از متد ()putExtra شی Intent برای افزودن مقادیر به صورت دیگشنری استفاده نمود

//--use putExtra() to add new name/value pairs--

                 i.putExtra("str1", "this is a string");

                                   i.putExtra("age1", 25);

کد بالا دوجفت نام/مقدار را به شی Intent اضافه میکند که یکی از آنها string و دیگری integer است  در واقع شکل کلی این متد بدین صورت است putExtra(string (name, value که برای value نوع ای مختلفی میتوان استفاده کرد.

علاوه بر استفاده از متد ()putExtra همچنین میتوان یک شی Bundle ایجاد کرده و سپس آن را با استفاده از متد ()putExtra پیوست داد. تصور کنید که شی Bundle یک شی دیگشنری است. این شی حاوی چندین جفت نام/مقدار است. قطعه کد زیر یک شی Bundle ایجاد کرده و دو جفت نام/مقدار به آن اضافه کرده و با استفاده از دستور اخر به شی  Intent پیوست داده شده.

//--use a Bundle object to add new name/value pairs--

                 Bundle b=new Bundle();

                 b.putString("str2", "this is another string");

                 b.putInt("age2", 35);

                 //--attach the Bundle object to the Intent object--

                 i.putExtras(b);

در اکتیویتی دوم برای دریافت اطلاعات ارسال شده با استفاده از شی Intent ابتدا میبایستی شی Intent را با استفاده از متد ()getIntent دریافت کنیم سپس متد ()getIntExtra را جهت دربافت مقادیر Integer که توسط متد ()putExtra افزوده شده بودند فراخوانی کنیم(آرگومان دوم مقدار پیش فرض برای مواقعی است که به ازای نام مقداری وجود ندارد)

//--get the data passed in using getIntExtra--

     Toast.makeText(this, Integer.toString(getIntent().getIntExtra("age1", 0)),

 Toast.LENGTH_SHORT).show();

برای مقادیر رشته ای نیز از متد ()getStringExtra استفاده میکنیم.

برای دریافت شی Bundle از متد ()getExtra استفاده میکنیم

//--get the Bundle passed in--

          Bundle b = getIntent().getExtras();

و برای استخراج نام/مقدار ها به صورت تکی از تابع مناسب آن استفاده میکنیم مثلا ()getString و ()getInt

راه دیگر برای ارسال دیتا به اکتویتی دیگر استفاده از متد ()setData است

//--use the setData() method to return some value--

          i.setData(Uri.parse("something passed back to main activity"));

          

معمولا از متد ()setData مواقعی استفاده میکنیم که بخواهیم Intent عملیاتی را انجام دهد(برای مثال ارسال یک URL به مرورگر خود اندروید جهت نمایش صفحه وب که در ادامه آموزشات ببه این موضوع میپردازیم)برای دریافت دیتایی که با استفاده از متد ()setData فرستاده شده از متد ()getData استفاده میکنیم

 //--get the result using getData()--

          Toast.makeText(this, data.getData().toString(), Toast.LENGTH_SHORT).show();

مدرس : خانم مهندس داودی نژاد

آموزش اندروید فصل دوم قسمت ششم

آموزش اندروید فصل دوم قسمت هشتم

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *