كيفية استدعاء نافدة منبتقة في الاندرويد popup fragement android studio

كيفية استدعاء نافدة منبتقة في الاندرويد popup fragement android studio

عادة ما نحتاج الى استدعاء اشياء مختلفة في نافدة واحدة حسب مراد الزبون و هنا ياتي الدور المهم لل fragement حيث يمنح للتطبيق انسيابية و شكل افضل و اكثر تفاعلية مع المستخدم و سنتناول في هذا الدرس كيفية استدعاء نافدة منبتقة في الاندرويد android studio بكل بساطة و سهولة طبعا .
اولا fragement هو نافدة كغيرها من النوافد لكن بمميزات اخرى وهي لا تظهر في ملف minifests كحال activity يمكن استعمالها كنافدة منفردة او استدعاءها داخل نافذة اخرى.
وهذا مثال بسيط
نقوم بانشاء fragement  كما في الصورة :
كيفية استدعاء نافدة منبتقة في الاندرويد android studio fragementكيفية استدعاء نافدة منبتقة android studio
نضع الكود التالي :
<framelayout android:layout_height="match_parent" android:layout_width="match_parent" tools:context="layout.popUp" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<!-- TODO: Update blank fragment layout -->
<linearlayout android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical">
<button android:id="@+id/button3" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="number1">
</button><button android:id="@+id/button4" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="number2"/>
<textview android:id="@+id/textView4" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Large Text" android:textappearance="?android:attr/textAppearanceLarge"/></linearlayout>
</framelayout>
ننتقل الى ملف جافا :
package com.learnmore.androidbella;
 
import android.app.Dialog;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
 
import com.learnmore.androidbella.R;
//مهم جدا خاصية dialogfragment
public class popUp extends DialogFragment {
    //اثناء استدعاء النافدة
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
       final View view = inflater.inflate(R.layout.pop_up, container,false);
        //استدعاء الازرار
        Button tv0=(Button) view.findViewById(R.id.button3);
        Button tv1=(Button) view.findViewById(R.id.button4);
        //عند الضغط على الزر الاول
        tv0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //استدعاء النص
                TextView tv=(TextView)view.findViewById(R.id.textView4);
                tv.setText("number1");
            }
        });
        //عند الضغط على الزر التاني
        tv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //استدعاء النص
                TextView tv=(TextView)view.findViewById(R.id.textView4);
                tv.setText("number2");
            }
        });
        return view;
    }
    //بعد انشاء النافدة
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
 
    }
 
}
بعدها قم بالذهاب الى النافدة التي ترغب في اظهار fragement داخلها
ملف xml
<relativelayout android:layout_height="match_parent" android:layout_width="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" tools:context="com.learnmore.androidbella.MainActivity" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
  
    <linearlayout android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical">
  
        <textview android:id="@+id/textView2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Medium Text" android:textappearance="?android:attr/textAppearanceMedium"/>
  
        <button android:id="@+id/button5" android:layout_height="wrap_content" android:layout_width="wrap_content" android:onclick="forge" android:text="forge"/>
    </linearlayout>
</relativelayout>
ننتقل الى ملف جافا :
package com.learnmore.androidbella;
 
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void forge(View view) {
        FragmentTransaction manager=getSupportFragmentManager().beginTransaction();
        popUp pop=new popUp();
        pop.show(manager,null);
    }
}
النتيجة :
هل ترغب في مثل هذه التدوينات

اسماعيل ايت بلا

ببساطة ارغب في تجربة جديدة من التعلم من خلال مشاركة ما تعلمه يجبرني ذلك على البحث لمدة طويلة مما يجعل الموقع جديرا بالثقة

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

الاشتراك بالقائمة البريدية

توصل باحدث مواضيعنا و كن على اطلاع باخر اخبار وتقنيات الاندرويد