العودة   منتديات طلاب الجامعة العربية المفتوحة > منتدى كليات الجامعة العربية المفتوحة > منتدى تقنية المعلومات والحاسوب > M299

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع

قديم 03-10-2016, 06:41 PM   #1
khalidaou khalidaou غير متصل
طــالب
 
الصورة الرمزية khalidaou

 











شرح الدرس الخامس: تشغيل نشاط آخر


تشغيل نشاط آخر



بعدما إنتهينا من الدرس الرابع صار لدينا برنامج صار لدينا activity بشاشة واحدة ويحتوي على text field و button. في هذا الدرس سنقوم بإضافة نصوص برمجية في MainActivity الذي سيفتح activity جديد عندما يضغط المستخدم على Send button.



الرد على زر الإرسال:


1. سنقوم بإضافة جديدة في activity_main.xml الموجود في res > layout > activity_main.xml سنقوم بإضافة androidnClick في متغير <Button> .



كود PHP:
<Button
        android
:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:text="@string/button_send"
        
android:onClick="sendMessage"/> 

هذا المتغير سيقوم بمحاكة النظام لكي يستخدم ال method التالي sendMessage() من ال activity حين الضغط عليه.

2. أفتح الملف MainActivity.java من java من ثم com.example.myfirstapp و قم بإضافة sendMessage() method :

كود PHP:
/** Called when the user clicks the Send button */
    
public void sendMessage(View view) {
        
// Do something in response to button
    


لتعديل الخطأ الظاهر في View قم بإضافة المكتبة التالية أسفل

كود PHP:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle

ليصبح النص البرمجي كالتالي:

كود PHP:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class 
MainActivity extends AppCompatActivity {

    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.activity_main);
    }

    
/** Called when the user clicks the Send button */
    
public void sendMessage(View view) {
        
// Do something in response to button
    


ليقوم البرنامج مطابقة ال method المعرف في androidnClick يجب عليه أن يكون:

public أي عام

أنا يكون به قيمة أرجاع فارغة void

أنا يكون فيه موضوع نقاش View الذي يعكس ال button بما أنه من نوع View



إنشاء Intent:

Intent عبارة عن عنصر يوفر رابط وقت تشغيل بين مكونات منفصلة (مثل أثنين من ال Activity). ال Intent يمثل التطبيق للقيام بنشاط ما. يمكنك استخدام ال Intent في نشاطات كثير لاكن في درسنا هذا سنركز على فتح Activity جديد.

أضف النص البرمجي التالي في ملف MainActivity.java داخل sendMessage() ليصبح كالتالي:

كود PHP:
/** Called when the user clicks the Send button */
    
public void sendMessage(View view) {
        
Intent intent = new Intent(thisDisplayMessageActivity.class);
        
EditText editText = (EditTextfindViewById(R.id.edit_message);
        
String message editText.getText().toString();
        
intent.putExtra(EXTRA_MESSAGEmessage);
        
startActivity(intent);
    } 


كود PHP:
package com.example.myfirstapp;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class 
MainActivity extends AppCompatActivity {

    public final static 
String EXTRA_MESSAGE "com.example.myfirstapp.MESSAGE";
    
    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.activity_main);
    }

    
/** Called when the user clicks the Send button */
    
public void sendMessage(View view) {
        
Intent intent = new Intent(thisDisplayMessageActivity.class);
        
EditText editText = (EditTextfindViewById(R.id.edit_message);
        
String message editText.getText().toString();
        
intent.putExtra(EXTRA_MESSAGEmessage);
        
startActivity(intent);
    }



لتعديل الأخطاء يمكنك اختيار أي من النصوص بالأحمر من ثم Alt + Enter لتصبح المكتبات المستخدمة كالتالي:


كود PHP:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText

بعد التعديل ستبقى مشكلة واحدة وهي DisplayMessageActivity سنقوم بتصحيحها فيما بعد.

إذا لاحظنا في النص البرمجي المتعلق بال Intent سنرى أننا نستخدم موضوعين اثنين في النقاش وهما Context و Class:
كود PHP:
 Intent intent = new Intent(thisDisplayMessageActivity.class); 

النقاش الأول هو ال Context المعرف ب this ليعود لنفس ال Activity كلاس لانه يورث صفات ال Context.

النقاش الثاني Class ويعود لل Activity إلي نريد النظام يوصله وفي هالحالة إلي نريد النظام يقوم بتشغيلة.

putExtra() يقوم بأخذ المحتوى النصي في EditText ليوصله لل Activity إلي راح نفتحه.



إنشاء Activity جديد:

1. من نافذة الالمشروع قم بإختيار ملف app واضغط على الزر الأيمن في الفأرة ومن ثم أختار New و في القائمة الجديدة أختار Activity ومن تلك القائمة أختار Empty Activity.


2. من نافذة Configure Activity قم بإضافة DisplayMessageActivity في خانة Activity Name ومن ثم أضغط على Finish



إلحين راح نلاحظ أن أندرويد ستوديو راح يعمل ثلاث أشياء بطريقة أتوماتيكية لنا:

1. راح يسوي لنا ملف DisplayMessageActivity.java بالإضافة إلى onCreate() method.

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

3. راح يضيف لنا ال <activity> الي راح نستخدمها في ملف AndroidManifest.xml.

إذا إلحين حاولنا أننا نشغل البرنامج و ضغطنا على زر Send راح نلاحظ أن يفتح الواجهة الجديدة بس بتكون خالية لأنها تكون بالإعدادات الأساسية عند البدء.


إظهار الرسالة


سنقوم بإضافة الكلاس الثاني لكي تظهر الرسالة المرسلة من ال activity الأول.

1. قم بإضافة النص البرمجي التالي في كلاس DisplayMessageActivity.java داخل onCreate() :

كود PHP:
Intent intent getIntent();
        
String message intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        
TextView textView = new TextView(this);
        
textView.setTextSize(40);
        
textView.setText(message);

        
ViewGroup layout = (ViewGroupfindViewById(R.id.activity_display_message);
        
layout.addView(textView); 

ليصبح النص البرمجي كالتالي:


كود PHP:
public class DisplayMessageActivity extends AppCompatActivity {

    @
Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        
setContentView(R.layout.activity_display_message);

        
Intent intent getIntent();
        
String message intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        
TextView textView = new TextView(this);
        
textView.setTextSize(40);
        
textView.setText(message);

        
ViewGroup layout = (ViewGroupfindViewById(R.id.activity_display_message);
        
layout.addView(textView);

    }



وقم بإضافة المكتبات التالية:



كود PHP:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView


توضيح النصوص البرمجية:

1. يقوم getIntent() بإنتزاع ال intent الذي قام بتشغيل ال activity. يقوم getStringExtra() بجلب الرسالة من ال activity الأول.


2. قمنا برمجيا بإنشاء TextView وحددنا حجم النص و أضفنا إليه الرسالة من ال activity السابق:

كود PHP:
TextView textView = new TextView(this);
* *
textView.setTextSize(40);
* *
textView.setText(message); 

3
. قمنا بإضافة ال TextView إلى ال layout المعرف ب R.id.activity_display_message. وقمنا بعمليه صب cast لل layout لتكون جزء من ViewGroup لأنه الكلاس الأب لكل ال layouts ويحتوي على addView() method.



قوموا بتشغيل البرنامج بإستخدام زر run


هذا البرنامج عند التشغيل







هذا البرنامج بعد أرسال الرسالة







أتمنى أنكم أستفدتم من الشرح

هذا وتفضلوا فائق الإحترام و التقدير



التوقيع

Add my First published vedio game on your Android devices

khalidaou غير متصل   رد مع اقتباس
قديم 03-10-2016, 07:16 PM   #2
khalidaou khalidaou غير متصل
طــالب
 
الصورة الرمزية khalidaou

 











تنويه رد: الدرس الخامس: تشغيل نشاط آخر


رفعت لكم المشروع على GitHub علشان تستفيدون من البرمجة النصية إلي طبقناها من الدرس الأول للدرس الخامس.

https://github.com/khalidaou/MyFirstApp
khalidaou غير متصل   رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع


الساعة الآن 01:24 PM.


Powered by vBulletin® Version 3.8.1, Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. TranZ By Almuhajir
جميع المواضيع والمشاركات تعبر عن وجهة نظر أصحابها
ولا تعبر باي شكل من الاشكال عن وجهة نظر منتديات AOUA
تصميم وتطوير : التكنولوجيا الماسية