2016/10/02

كيفية التبديل بين الـ Activities في اندرويد

بسم الله الرحمن الرحيم 
في هذه التدوينة سنتكلم عن كيفية التبديل بين الانشطة " Activities "


قبل الشرح شوف نتتعرف علي الاوامر البرمجية التي سوف نستخدمها في التبديل بين الانشطة .

 فتح " Activity " جديد 
لكي نقوم بفتح "Activity" جديد نستخدم دالة " ()StartActivity "
Intent i = new Intent(getApplicationContext(), SecondScreen.class);
StartActivity(i);
 ارسال براميترللـ "Activity" الجديد 
لكي نرسل براميتر للـ"Activity" الذي انشاناه نستخدم دالة " ()putExtra "

i.putExtra("key""value");

// Example of sending email to next screen as
// Key = 'email'
// value = 'myemail@gmail.com'
i.putExtra("email""myemail@gmail.com");

استلام البراميتر في الـ"Activity" الجديد
لكي يتم استلام البراميتر في الـ"Activity" الذي انشاناه نستخدم دالة " ()getStringExtra "

Intent i = getIntent();
i.getStringExtra("key");

// Example of receiving parameter having key value as 'email'
// and storing the value in a variable named myemail
String myemail = i.getStringExtra("email");

لاغلاق الـ "Activity" نستخدم دالة  " ()finish " 
finish();
الان سنقوم بإنشاء مشروع بسيط يوضح كيفية التنقل بين الـ "Activities" .
في هذا المشروع سوف اقوم بإنشاء ملفين xml  للواجهات ( Screen1 , Screen2)  وملفين جافا (Activity1 , Activity2)
كما في الصوره التالية :

1. الان نقوم بإنشاء مشروع جديد  File > New > New Project 
2. عند انشاء المشروع اعطي لملف الجافا اسم " Activity1 " , ولملف الـxml اسم " screen1 " .
3. الان قم بكتابة الكود التالي في ملف screen1.xml   . هذا الكود يحتوي علي شكل بسيط و زر . 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f06"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Name: " />

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dip" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Email: " />

    <EditText
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dip" />

    <Button
        android:id="@+id/btnNextScreen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dip"
        android:text="ارسال البيانات الي الشاشة التالية" />

</LinearLayout>




4. قم بفتح ملف Activity1.java وقم بكتابة الكود التالي بداخله . هذ الكود سوف نقوم بإنشاء " Intent " جديد وسنمرر برامترات عند الضغط علي الزر .

package mesalm.switchbetweenactivities;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Activity1 extends Activity {
    // تهيئة المتغيرات
    EditText inputName;
    EditText inputEmail;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen1);

        inputName = (EditText) findViewById(R.id.name);
        inputEmail = (EditText) findViewById(R.id.email);
        Button btnNextScreen = (Button) findViewById(R.id.btnNextScreen);

        //الاستماع الي حدث الزر
        btnNextScreen.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                //بداية intent جديد
                Intent nextScreen = new Intent(getApplicationContext(), Activity2.class);

                //ارسال البيانات الي Activity  اخر
                nextScreen.putExtra("name", inputName.getText().toString());
                nextScreen.putExtra("email", inputEmail.getText().toString());

                Log.e("n", inputName.getText() + "." + inputEmail.getText());

                startActivity(nextScreen);
            }
        });
    }
}


5. الان سنقوم بإنشاء الشاشة الثانية كالتالي : كليك يمين علي layout 
layout > New > Activity > Empty Activity



- Activity Name  سيكون Activity2
- layout Name سيكون  screen2

6. قم بكتابة الكود التالي في ملف screen2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f06">

    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="لقد ادخلت . . . ."
        android:textSize="25dip"
        android:gravity="center"
        android:layout_margin="15dip"/>

    <TextView android:id="@+id/txtName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="15dip"
        android:textSize="18dip"/>

    <TextView android:id="@+id/txtEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="15dip"
        android:textSize="18dip"/>

    <Button android:id="@+id/btnClose"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dip"
        android:textSize="25dip"
        android:text="اغلاق"/>

</LinearLayout>

7. الان نقوم بكتابة الكود التالي في ملف Activity2.java  . الهدف من الكود هذا  عرض البراميترات التي قمنا بإرسالها من الشاشة الاولي .

package mesalm.switchbetweenactivities;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Activity2 extends Activity {
    /* يتم استدعاء هذه الداله عند بداية الـActivity */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen2);

        TextView txtName = (TextView) findViewById(R.id.txtName);
        TextView txtEmail = (TextView) findViewById(R.id.txtEmail);
        Button btnClose = (Button) findViewById(R.id.btnClose);

        Intent i = getIntent();
        //استلام البيانات
        String name = i.getStringExtra("name");
        String email = i.getStringExtra("email");
        Log.e("Second Screen", name + "." + email);

        // عرض البيانات المستلمة
        txtName.setText(name);
        txtEmail.setText(email);

        // ربط حدث النقر بالزر
        btnClose.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                //اغلاق الـActivity الثاني
                finish();
            }
        });
    }
}

8.  نذهب الي ملف AndroidManifest.xml ونقوم باضافة الكود التالي بين الوسم "application" لربط الـ " Activities " ببعضها .

<activity android:name=".Activity2"></activity>

 9. اخيراً نقوم بتشغيل التطبيق بالضغط علي " Run " (  )
 النتيجة كالتالي :


1 التعليقات so far


Emoticon Emoticon