測試 FindViewsWithText 方法,遍歷巡覽 ViewGroup LinearLayout 內的 View 物件[C# Android]

这篇博客讲述了作者在C#中尝试实现Android的FindViewsWithText方法遇到的问题。通过分析,作者发现该方法在C#环境下可能与Java中的实现有所不同,导致无法正确遍历并对比View对象。作者提供了自己的代码示例,并表达了对解决方案的探索和求知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

緣起
简小郎
findViewsWithText的使用

C#從零開始_自學C#、Visual Studio實境秀 74-6-張凱慶老師菩薩在Udemy上入門的第8堂課 實作Android專案練習 猜數字遊戲 弄懂findViewsWithText方法及怎麼實現View的巡覽遍歷

菩薩慈悲,末學在Visual Studio 2019 以 C# 來照菩薩您所示的實作findviewsWithText方法,卻沒有作用。還不如末學用 for 迴圈和 ChildCount 來實作。
照您所示,加了contentDescription 属性,也無法比對出來,傳個空的ArrayList給它作引數,它也儲存不到比對的結果來輸出,而這個ArrayList壓根兒沒有什麼丁點的動靜。末學逐步偵錯則發現 findviewsWithText 方法根本只會迭代(iterate)ArrayList,卻不去做調用findviewsWithText的物件(object)內View的比對。

末學在Visual Studio中讀其定義,也看不到菩薩您這裡所示的View和 View裡的findViewsWithText實作,只有以下這樣:

    //
    // 摘要:
    //     To be added.
    //
    // 參數:
    //   outViews:
    //     To be added.
    //
    //   searched:
    //     To be added.
    //
    //   flags:
    //     To be added.
    //
    // 備註:
    //     Portions of this page are modifications based on work created and shared by the
    //     Android Open Source Project and used according to terms described in the Creative
    //     Commons 2.5 Attribution License.
    [Register("findViewsWithText", "(Ljava/util/ArrayList;Ljava/lang/CharSequence;I)V", "GetFindViewsWithText_Ljava_util_ArrayList_Ljava_lang_CharSequence_IHandler")]
    public virtual void FindViewsWithText(IList<View>? outViews, ICharSequence? searched, [GeneratedEnum] FindViewsWith flags);
    //
    // 摘要:
    //     To be added.
    //
    // 參數:
    //   outViews:
    //     To be added.
    //
    //   searched:
    //     To be added.
    //
    //   flags:
    //     To be added.
    //
    // 備註:
    //     Portions of this page are modifications based on work created and shared by the
    //     Android Open Source Project and used according to terms described in the Creative
    //     Commons 2.5 Attribution License.
    public void FindViewsWithText(IList<View>? outViews, string? searched, [GeneratedEnum] FindViewsWith flags);

不知問題出在哪裡,是C#不行嗎?沒有像菩薩這裡這樣的實作嗎?菩薩您這應該是 Java吧?

末學程式碼詳下:
https://blog.youkuaiyun.com/oscarsun72/article/details/108227131

感恩感恩 南無阿彌陀佛

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.Animation;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
//using Java.Lang;
//using Java.Lang.Reflect;
using Java.Util;

namespace GuessGameAndroidPractise {
   
    public class MyViewClass : IList<View> {
   
        Java.Util.ArrayList _arrView = new Java.Util.ArrayList ();
        View IList<View>.this [int index] {
    get => (View) _arrView.Get (index); set => _arrView.Set (index, (View) value); }
        internal MyViewClass (Java.Util.ArrayList arrView) {
   
            _arrView = arrView;
        }
        int ICollecti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值