بسم الله الرحمن الرحيم
في هذه التدوينة سنتكلم عن كيفية التبديل بين الانشطة " Activities "
قبل الشرح شوف نتتعرف علي الاوامر البرمجية التي سوف نستخدمها في التبديل بين الانشطة .
فتح " Activity " جديد
لكي نقوم بفتح "Activity" جديد نستخدم دالة " ()StartActivity "
استلام البراميتر في الـ"Activity" الجديد
لكي يتم استلام البراميتر في الـ"Activity" الذي انشاناه نستخدم دالة " ()getStringExtra "
7. الان نقوم بكتابة الكود التالي في ملف Activity2.java . الهدف من الكود هذا عرض البراميترات التي قمنا بإرسالها من الشاشة الاولي .
8. نذهب الي ملف AndroidManifest.xml ونقوم باضافة الكود التالي بين الوسم "application" لربط الـ " Activities " ببعضها .
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