كيفية استدعاء نافدة منبتقة في الاندرويد popup fragement android studio
03 March
اولا 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);
}
}


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