بسم الله الرحمن الرحيم
هذه التدوينة تشرح كيفية نقل بيانات من واجهة إلى أخرى برمجياً في اندرويد استوديو لبرمجة تطبيق اندرويد .. وفي هذا الشرح سوف نرسل نص من الواجهة الأولى إلى الثانية برمجياً.
الشرح سهل, ولكن يحتاج إلى تركيز قليلاً .. ولأن المتغيرات كثيرة سوف أستخدم في جميع دروسي من بعد اليوم الأحرف الأبجدية الانجليزية ( 3 أحرف مكررة + كبيرة + ترتيب أبجدي ) اي تستطيع تغيرها على راحتك .. فهي متغيرات أنا أقوم بتسميتها ولكن بعض المتغيرات سوف أسميها اسم قريب من شرحها كي تفهمها بشكل أكبر .. اي استخدم الاحرف الأبجدية فقط مع كثرة المتغيرات .
عموماً سوف يكون لدينا 2 Activity و 2 Layout .. الرئيسية لوضع نص وارساله .. والأخرى لاستقبال هذا النص ..
سوف أعرض عليكم الملفات ولكن انتبه على كل ID مستخدم لكل عنصر لكي تفهم جميع ما كتب لأنه مكرر معناً بشكل دائم. العناصر التي لها id هي فقط التي استخدمتها برمجياً ..
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:gravity="right" android:text="ادخل النص الذي تريد ارساله :" android:textSize="15dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_gravity="right" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ارسال" android:layout_margin="20dp" android:id="@+id/button" android:layout_gravity="center_horizontal" /> </LinearLayout>
second.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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="لقد ارسلت :" android:textSize="17dp" android:layout_gravity="right" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="هنا النص الذي ارسلته" android:id="@+id/textViewEEE" android:textColor="#ff0000" android:textSize="20dp" android:layout_gravity="center" /> </LinearLayout>
MainActivity.java
package com.andrody.first_app; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { EditText AAA ; Button BBB ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AAA = (EditText)findViewById(R.id.editText); BBB = (Button)findViewById(R.id.button); BBB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent CCC = new Intent(MainActivity.this,Second.class); String DDD = AAA.getText().toString(); CCC.putExtra("text", DDD); startActivity(CCC); } }); } }
Second.java
package com.andrody.first_app; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; /** * Created by Abboudi_Aliwi on 1/03/2015. */ public class Main extends Activity { TextView EEE; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EEE = (TextView)findViewById(R.id.textViewEEE); EEE.setText(getIntent().getExtras().getString("text")); } }
اي نعم الآن سوف أشرح ماذا حدث باختصار ..
في البداية ملفات layout واضحة تقوم بتنسيقها كيف شئت .. فما يهمنا فيها العنصر الذي سوف نرسله منها .. واخترنا عنصر EditText .. وزر Button لإرسال هذه الـ EditText إلى الاكتفتي الثاني .. هو يستقبلها ويضعها في عنصر من نوع TextView . أرجوا أن تكون قد فهمت هذه النقطة ..
بالجانب البرمجي في ملفات الجافا .. في الاكتفتي الرئيسي الأول MainActivity.java قلنا له لدينا EditText واسمه AAA وهو العنصر الـموجـود داخـل second.xml ويـحـمل id = editText . و أن لـديـنـا Button واسمه BBB و هـو الـعـنصر الـذي يـحمل id = button . وقلنا للزر BBB قم بالذهاب بنا إلى الاكتفتي الثانية Second.java وعرف لنا سترنج اسمها DDD وهي النص داخل AAA وحوله الى سترنج .. ثم قلنا للانتنت (CCC) الذي سوف ينقلنا خذ معنا putExtra ( وهي أنواع كثيرة بيانات اضافية وتستخدم دائماً مع الانتنت (Intent)) واسم خاص text ومعها DDD ( وهو السترنج الذي سجل داخله النص ) .. أما في الأكتفتي الثانية Second.java قلنا له لدينا نص اسمه EEE وهو العنصر الذي يحمل id = textViewEEE . وقلنا له كذلك بدل لنا EEE بـ السترنج الذي أتى بعنوان text من الاكتفتي الأولى ..
معاينة من درس اليوم :
في الغالب المبتدئين لم يفهموا كلامي بسهولة .. لذلك يفضل قراءة ما قلته مرة ومرتين .. وإن شاء الله الجميع يفهمه .. وأي استفسارات يمكنكم مشاركتنا أسفل في التلعيقات .. وشكراً لكم جميعاً 🙂
لتحميل التدوينة في كتاب إلكتروني Download pdf : https://andrody.com/?attachment_id=380
السلام عليكم . يوجد عندى خطأ لا ادرى ما هو مع انى منفذ الكود بالظبط وعند التشغيل ينقل الى الاكتفتى اللى بعده وبعدها يحدث توقف للتطتبيق
وعليكم السلام ,, المعذرة هل اضفت تعريف الاكتفتي الثانية في ملف AndroidManifest.xml ؟؟
مضافة تلقائيا وعندى طلب كيف اعرف متغير على مستوى المشروع كله اى انه يمكن العمل به فى جميع الاكتفتى .ولك جزيل الشكر .
اهلا وسهلا بك اخي , عن طريق جعل المتغير public static طريقتها سهلة, ويوجد طرق اخرى . ابحث عنها بلغة الجافا في جوجل وسوف تجد شروحات كثيرة تفيدك.
إن لم تجد طلبك اخبرني لاعداد لك مثال لذلك .. وبالتوفيق لك ~
بارك الله فيك وجزاك الله خيرا . وان ما نفعت معاى راح ابلغك