C# 在ItemLongClick ListView上重新使用DialogFragment
我正在尝试设置一个可以在ListView的ItemLongClick上显示的DialogFragment布局。对于listview中的每个项目,DialogFragment必须具有相同的布局。我也在使用Xamarin和C# 调用对话框片段的代码块。此代码位于listview_ItemLongClick(对象发送者,AdapterView.ItemLongClickEventArgs e)的内部 到目前为止,我已经尝试:C# 在ItemLongClick ListView上重新使用DialogFragment,c#,android,android-fragments,xamarin,xamarin.android,C#,Android,Android Fragments,Xamarin,Xamarin.android,我正在尝试设置一个可以在ListView的ItemLongClick上显示的DialogFragment布局。对于listview中的每个项目,DialogFragment必须具有相同的布局。我也在使用Xamarin和C# 调用对话框片段的代码块。此代码位于listview_ItemLongClick(对象发送者,AdapterView.ItemLongClickEventArgs e)的内部 到目前为止,我已经尝试: Android.App.FragmentTransaction transa
Android.App.FragmentTransaction transaction_prev = FragmentManager.BeginTransaction().AddToBackStack(null);
dialog_preview_busn previewBusn = new dialog_preview_busn(gName, gAddress, gZip, gNumber, gEmail, gWebsite, gHours, gImage);
previewBusn.Show(transaction_prev, "Dialog Preview Business");
我还尝试使用Xamarin文档介绍如何设置片段
当我退出DialogFragment并尝试重新打开它时(在同一个项目上和不同的项目上),我也会遇到一个错误
Android.Views.InflateException:二进制XML文件行#1:膨胀类片段时出错
给出错误的那行是
var view=inflater.Inflate(Resource.Layout.dialog\u preview\u busn,container,false)代码>
这是XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/dialogLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:minWidth="300dp"
android:minHeight="200dp"
android:weightSum="100"
android:gravity="center">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="15"
android:id="@+id/relativeLayout2"
android:minWidth="25px"
android:minHeight="25px">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginBottom="5dp"
android:indeterminate="true"
android:background="@drawable/progressBarDesign"
android:id="@+id/fragProgress"
android:visibility="invisible" />
</RelativeLayout>
<TextView
android:text=""
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:gravity="center"
android:textSize="20sp"
android:id="@+id/txtName" />
<LinearLayout
android:background="@drawable/dialogLayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5">
<LinearLayout
android:background="@drawable/dialogLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100">
<TextView
android:text="Address: "
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="fill_parent"
android:gravity="right"
android:textSize="15sp"
android:id="@+id/labAddess" />
<TextView
android:text=""
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="fill_parent"
android:gravity="left"
android:textSize="15sp"
android:id="@+id/txtAddress"
android:layout_below="@id/txtName" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:background="@drawable/dialogLayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5">
<LinearLayout
android:background="@drawable/dialogLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100">
<TextView
android:text="Number: "
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="fill_parent"
android:gravity="right"
android:textSize="15sp"
android:id="@+id/labNumber" />
<TextView
android:text=""
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="fill_parent"
android:gravity="left"
android:textSize="15sp"
android:id="@+id/txtNumber"
android:layout_below="@id/txtAddress" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:background="@drawable/dialogLayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5">
<LinearLayout
android:background="@drawable/dialogLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100">
<TextView
android:text="Email: "
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="fill_parent"
android:gravity="right"
android:textSize="15sp"
android:id="@+id/labEmail" />
<TextView
android:text=""
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="fill_parent"
android:gravity="left"
android:textSize="15sp"
android:id="@+id/txtEmail"
android:layout_below="@id/txtNumber" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:background="@drawable/dialogLayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5">
<LinearLayout
android:background="@drawable/dialogLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="100">
<TextView
android:text="Website: "
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="fill_parent"
android:gravity="right"
android:textSize="15sp"
android:id="@+id/labEmail" />
<TextView
android:text=""
android:layout_width="0dp"
android:layout_weight="50"
android:layout_height="fill_parent"
android:gravity="left"
android:textSize="15sp"
android:id="@+id/txtWebsite"
android:layout_below="@id/txtEmail" />
</LinearLayout>
</LinearLayout>
<TextView
android:text="Hours"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5"
android:gravity="center"
android:textSize="15sp"
android:id="@+id/labHours"
android:layout_below="@id/txtWebsite" />
<TextView
android:text=""
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5"
android:gravity="center"
android:textSize="15sp"
android:id="@+id/txtHours"
android:layout_below="@id/labEmail" />
<ImageView
android:layout_width="30sp"
android:layout_height="30sp"
android:paddingTop="6sp"
android:layout_gravity="center"
android:background="#4A115C"
android:src="@drawable/menu_down_arrow"
android:id="@+id/downArrow"/>
<LinearLayout
android:background="@drawable/dialogLayout"
android:id="@+id/mapLayout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="5">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="200sp"
android:layout_marginLeft="10sp"
android:layout_marginRight="10sp"
android:layout_marginTop="15sp"
android:layout_marginBottom="10sp"
android:name="com.google.android.gms.maps.MapFragment" />
</LinearLayout>
</LinearLayout>
对于对话框_prev_busn.cs:
using Android.App;
using Android.OS;
using Android.Views;
using Android.Widget;
using Android.Graphics;
using Android.Gms.Maps;
using System;
using Android.Gms.Maps.Model;
namespace My_Town_App.Droid
{
class dialog_preview_busn : DialogFragment
{
public string gName, gAddress, gNumber, gEmail, gWebsite, gHours, gImage;
public int gZip;
private GoogleMap gMap;
public dialog_preview_busn(string Name, string Address, int Zip, string Number, string Email, string Website, string Hours, string Image)
{
gName = Name;
gAddress = Address;
gZip = Zip;
gNumber = Number;
gEmail = Email;
gWebsite = Website;
gHours = Hours;
gImage = Image;
System.Diagnostics.Debug.Write("-----------------");
System.Diagnostics.Debug.Write("dialog_preview_busn");
System.Diagnostics.Debug.Write("-----------------");
System.Diagnostics.Debug.Write("Name: " + Name + " Address: " + Address + " Zip: " + Zip + " Number: " + Number);
System.Diagnostics.Debug.Write("Email: " + Email + " Website: " + Website + " Hours: " + Hours + " Image: " + Image);
//gOnLogInComplete.Invoke(this, new OnLogInEventArgs(gtxtEmail.Text, gtxtPassword.Text));
//PassedParams.Invoke(this, new PassedParams(user, pass));
}
//----------------------------------------
// OnCreate Activity
//----------------------------------------
public override void OnActivityCreated(Bundle savedInstanceState)
{
Dialog.Window.RequestFeature(WindowFeatures.NoTitle); //Set the Title Bar to invisable
base.OnActivityCreated(savedInstanceState);
TextView txtName = View.FindViewById<TextView>(Resource.Id.txtName);
TextView txtAdress = View.FindViewById<TextView>(Resource.Id.txtAddress);
TextView txtNumber = View.FindViewById<TextView>(Resource.Id.txtNumber);
TextView txtEmail = View.FindViewById<TextView>(Resource.Id.txtEmail);
TextView txtWebsite = View.FindViewById<TextView>(Resource.Id.txtWebsite);
TextView txtHours = View.FindViewById<TextView>(Resource.Id.txtHours);
TextView labHours = View.FindViewById<TextView>(Resource.Id.labHours);
ImageView downArrow = View.FindViewById<ImageView>(Resource.Id.downArrow);
LinearLayout mapLayout = View.FindViewById<LinearLayout>(Resource.Id.mapLayout);
mapLayout.Visibility = ViewStates.Gone;
SetUpMap();
downArrow.Click += delegate
{
System.Diagnostics.Debug.Write("down arrow is working");
if (mapLayout.Visibility == ViewStates.Visible)
{
downArrow.SetImageResource(Resource.Drawable.menu_down_arrow);
mapLayout.Visibility = ViewStates.Gone;
}
else if (mapLayout.Visibility == ViewStates.Gone)
{
downArrow.SetImageResource(Resource.Drawable.menu_up_arrow);
mapLayout.Visibility = ViewStates.Visible;
}
};
txtName.Text = gName;
txtName.PaintFlags = PaintFlags.UnderlineText;
txtAdress.Text = (gAddress + " " + gZip).ToString();
txtNumber.Text = gNumber;
txtEmail.Text = gEmail;
txtWebsite.Text = gWebsite;
string[] aryHours = gHours.Split(',');
foreach (string s in aryHours)
{
txtHours.Text += (s + " ").ToString();
}
labHours.PaintFlags = PaintFlags.UnderlineText;
Dialog.Window.Attributes.WindowAnimations = Resource.Style.dialog_animation; //set the animation
}
//----------------------------------------
// OnCreate View
//----------------------------------------
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
base.OnCreateView(inflater, container, savedInstanceState);
var view = inflater.Inflate(Resource.Layout.dialog_preview_busn, container, false);
return view;
}
private void SetUpMap()
{
if (gMap == null)
{
FragmentManager.FindFragmentById<MapFragment>(Resource.Id.map);
}
LatLng location = new LatLng(50.897778, 3.013333);
CameraPosition.Builder builder = CameraPosition.InvokeBuilder();
builder.Target(location);
builder.Zoom(18);
builder.Bearing(155);
builder.Tilt(65);
CameraPosition cameraPosition = builder.Build();
CameraUpdate cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);
MapFragment mapFrag = (MapFragment)FragmentManager.FindFragmentById<MapFragment>(Resource.Id.map);
GoogleMap map = mapFrag.Map;
if (map != null)
{
map.MoveCamera(cameraUpdate);
}
}
public void OnMapReady(GoogleMap googleMap)
{
gMap = googleMap;
}
}
}
使用Android.App;
使用Android.OS;
使用Android.Views;
使用Android.Widget;
使用Android.Graphics;
使用Android.Gms.Maps;
使用制度;
使用Android.Gms.Maps.Model;
名称空间My_Town_App.Droid
{
类对话框\u预览\u busn:DialogFragment
{
公共字符串gName、gAddress、gNumber、gEmail、gWebsite、gHours、gImage;
公共int gZip;
私有谷歌地图;
公共对话框\u预览\u busn(字符串名称、字符串地址、int-Zip、字符串编号、字符串电子邮件、字符串网站、字符串小时数、字符串图像)
{
gName=名称;
地址;
gZip=Zip;
gNumber=数字;
电子邮件;
gWebsite=网站;
小时=小时;
gImage=图像;
System.Diagnostics.Debug.Write(“-------------------”;
System.Diagnostics.Debug.Write(“对话框预览”);
System.Diagnostics.Debug.Write(“-------------------”;
System.Diagnostics.Debug.Write(“名称:“+Name+”地址:“+Address+”邮编:“+Zip+”编号:“+Number”);
系统。诊断。调试。写入(“电子邮件:“+电子邮件+”网站:“+网站+”小时:“+小时+”图像:“+图像”);
//调用(这是新的OnLogInEventArgs(gtxtEmail.Text,gtxtPassword.Text));
//调用(这个,新的PassedParams(用户,pass));
}
//----------------------------------------
//OnCreate活动
//----------------------------------------
已创建ActivityState(Bundle savedInstanceState)上的公共覆盖无效
{
Dialog.Window.RequestFeature(WindowFeatures.NoTitle);//将标题栏设置为不可见
创建的基本活动(savedInstanceState);
TextView txtName=View.findviewbyd(Resource.Id.txtName);
TextView txtAddress=View.findviewbyd(Resource.Id.txtAddress);
TextView txtNumber=View.findviewbyd(Resource.Id.txtNumber);
TextView-txtEmail=View.findviewbyd(Resource.Id.txtEmail);
TextView txtWebsite=View.findviewbyd(Resource.Id.txtWebsite);
TextView txtHours=View.findviewbyd(Resource.Id.txtHours);
TextView labHours=View.findviewbyd(Resource.Id.labHours);
ImageView向下箭头=View.FindViewById(Resource.Id.downArrow);
LinearLayout mapLayout=View.FindViewById(Resource.Id.mapLayout);
mapLayout.Visibility=ViewStates.Gone;
SetUpMap();
向下箭头。单击+=委派
{
System.Diagnostics.Debug.Write(“向下箭头正在工作”);
如果(mapLayout.Visibility==ViewState.Visible)
{
SetImageResource(Resource.Drawable.menu\u向下箭头);
mapLayout.Visibility=ViewStates.Gone;
}
else if(mapLayout.Visibility==ViewStates.Gone)
{
向下箭头.SetImageResource(Resource.Drawable.menu\u向上箭头);
mapLayout.Visibility=ViewState.Visible;
}
};
Text=gName;
txtName.PaintFlags=PaintFlags.UnderlineText;
Text=(gAddress+“”+gZip).ToString();
Text=gNumber;
Text=gEmail;
Text=gWebsite;
字符串[]aryHours=gHours.Split(',');
foreach(以小时为单位的字符串s)
{
txtHours.Text+=(s+“”).ToString();
}
labHours.PaintFlags=PaintFlags.UnderlineText;
Dialog.Window.Attributes.WindowAnimations=Resource.Style.Dialog\u animation;//设置动画
}
//----------------------------------------
//OnCreate视图
//----------------------------------------
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
base.OnCreateView(充气机、容器、保存状态);
var视图=充气机。充气(Resource.Layout.dialog\u preview\u busn,container,false);
返回视图;
}
私有void SetUpMap()
{
如果(gMap==null)
{
FragmentManager.FindFragmentById(Resource.Id.map);
}
板条位置=