android 怎么在自定义控件中获取控件所在fragment的实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么在自定义控件中获取控件所在fragment的实例相关的知识,希望对你有一定的参考价值。

在构造方法,或者set方法等注入fragment,类似很多自定义控件使用Context一样。

可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块。
使用Fragment时,需要继承Fragment或者Fragment的子类(DialogFragment, ListFragment, PreferenceFragment, WebViewFragment)。
参考技术A getFragmentManager().findFragmentById(id).getView().findViewById(id)
这样应该就可以了本回答被提问者和网友采纳

获取“调用的目标已引发异常。”在自定义控件中

【中文标题】获取“调用的目标已引发异常。”在自定义控件中【英文标题】:Getting "Exception has been thrown by the target of an invocation." in custom control 【发布时间】:2017-04-30 03:54:15 【问题描述】:

我在 Xamarin 跨平台中创建了自定义条目控件。但不知道为什么异常来了。我哪里做错了?

这是我的代码

CustomEntry.cs

public class CustomEntry : Entry
    
        public static readonly BindableProperty cornerRadiusProperty = BindableProperty.Create("Radius",typeof(double),typeof(CustomEntry),0);
        public double CornerRadius  
            get  return (double)GetValue(cornerRadiusProperty);
            set  SetValue(cornerRadiusProperty, value);  
        
    

MyXaml 页面

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:cl="clr-namespace:customcontrolapp;assembly=customcontrolapp" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    x:Class="customcontrolapp.MyXaml" >
    <ContentPage.Content>
        <cl:CustomEntry Text="Sample" />
    </ContentPage.Content>
</ContentPage>

【问题讨论】:

这下面一定有一个异常。仔细检查您的输出窗口。 您将 int 作为默认值,它无法处理为双精度值。尝试 0.0 作为默认值。此外,propertyName 参数设置为Radius,而您的属性称为CornerRadius。为此,它们应该匹配。你也可以使用nameof(CornerRadius) 来减少你的魔术字符串使用:) @StevenThewissen 谢谢..你的建议奏效了!! 【参考方案1】:

我已解决此异常,将链接器选项链接全部更改为 SDK 链接。 谢谢

【讨论】:

以上是关于android 怎么在自定义控件中获取控件所在fragment的实例的主要内容,如果未能解决你的问题,请参考以下文章

android 开发的时候怎么动态设置控件宽高

获取“调用的目标已引发异常。”在自定义控件中

怎么为android控件边缘添加阴影

Qt中获取控件所在界面的位置,该怎么解决

在android中listview中怎么获取条目中某个控件的宽度

Qt中获取控件所在界面的位置,该怎么解决