Android:OnClickListener 在初始加载时无响应?

     2023-04-15     223

关键词:

【中文标题】Android:OnClickListener 在初始加载时无响应?【英文标题】:Android: OnClickListener unresponsive on Initial Load? 【发布时间】:2016-10-24 19:56:34 【问题描述】:

我遇到了一个奇怪的问题,我不确定是什么原因造成的。基本上,我使用ErrorFragment 类来显示错误,简单吧?

问题与使用setButtonClickListener 设置按钮单击侦听器有关。最初加载 MainFragment 时,该按钮不会向我的 Android TV 遥控器注册任何点击。

但是,如果我使用遥控器上的后退按钮重新加载 MainFragment,则该按钮会记录点击次数。

谁能告诉我为什么会发生这种情况?

谢谢!

MainActivity.java:

public class MainActivity extends Activity

    protected void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    

activity_main.xml:

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_browse_fragment"
    android:name="com.ui.MainFragment"
    android:layout_
    android:layout_
    tools:context="com.ui.MainActivity"
    tools:deviceIds="tv"
    tools:ignore="MergeRootFrame" />

MainFragment.java:

public class MainFragment extends DetailsFragment

    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    
        super.onActivityCreated(savedInstanceState);

        setupUIElements();

        if (isConnectingToInternet() == true)
        
            prepareBackgroundManager();
            loadRows();
            setupEventListeners();
        
        else
        
            InternetConnectivityFragment internetError = new InternetConnectivityFragment();

            getFragmentManager().beginTransaction().add(R.id.main_browse_fragment, internetError).commit();
        
    

    public class GetInternetStatus extends AsyncTask<Void,Void,Boolean>
    

        @Override
        protected Boolean doInBackground(Void... params)
        

            return hasInternetAccess();
        

        protected boolean hasInternetAccess()
        
            try
            
                URL url = new URL("http://www.google.com");

                HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
                urlc.setRequestProperty("User-Agent", "Android Application:1");
                urlc.setRequestProperty("Connection", "close");
                urlc.setConnectTimeout(1000 * 30);
                urlc.connect();

                // http://www.w3.org/Protocols/HTTP/HTRESP.html
                if (urlc.getResponseCode() == 200 || urlc.getResponseCode() > 400)
                
                    // Requested site is available
                    return true;
                
            
            catch (Exception ex)
            
                // Error while trying to connect
                ex.printStackTrace();
                return false;
            
            return false;
        
    

    // Checking for all possible internet connections
    public  boolean isConnectingToInternet()
    
        Boolean result = false;

        try
        
            //get the result after executing AsyncTask
            result = new GetInternetStatus().execute().get();
        
        catch (InterruptedException e)
        
            e.printStackTrace();
        
        catch (ExecutionException e)
        
            e.printStackTrace();
        
        return result;
    

    ....

InternetConnectivityFragment.java:

public class InternetConnectivityFragment extends android.support.v17.leanback.app.ErrorFragment

    private static int TIMER_DELAY = 3000;
    private static final String TAG = "InternetFragment";
    private static final boolean TRANSLUCENT = true;

    @Override
    public void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);

        setErrorContent();
    

    private void setErrorContent()
    
        setImageDrawable(getResources().getDrawable(R.drawable.lb_ic_sad_cloud, null));
        setMessage(getResources().getString(R.string.no_internet_message));
        setDefaultBackground(TRANSLUCENT);

        setButtonText(getResources().getString(R.string.retry_connection));

        setButtonClickListener(new View.OnClickListener()
        
            @Override
            public void onClick(View arg0)
            
                MainFragment mainFragment = new MainFragment();

                if (mainFragment.isOnline() == true)
                
                    getFragmentManager().beginTransaction().remove(InternetConnectivityFragment.this).commit();
                    getFragmentManager().popBackStack();
                
            
        );
    


【问题讨论】:

你能把你的 loadRows 方法放进去吗?也许是这个原因。 这不是问题 尝试使用 ChildFragmentManager,而不是使用 FragmentManager。实际上,如果您想在另一个片段中添加片段,那么您必须使用子片段管理器 【参考方案1】:

您有 android API 来检查网络连接。检查此Network Connectivity

不建议在方法isOnline() 中访问Process。至少在主线程中。点击监听器中的mainFragment.isOnline() 可能是原因。尝试将其注释掉。

【讨论】:

注释掉没有效果,我还是无法用遥控器注册按钮点击...我添加了截图 尝试同样的调试。需要时间或迷路的地方。

按钮 onClickListener 在 Android 中无法播放声音

】按钮onClickListener在Android中无法播放声音【英文标题】:buttononClickListenernotworkinginAndroidtoplayasound【发布时间】:2018-10-1511:10:08【问题描述】:我试图将我的按钮设置为单击时播放歌曲,但没有任何反应,没有错误,也没有强制... 查看详情

Android:OnClickListener 在初始加载时无响应?

】Android:OnClickListener在初始加载时无响应?【英文标题】:Android:OnClickListenerunresponsiveonInitialLoad?【发布时间】:2016-10-2419:56:34【问题描述】:我遇到了一个奇怪的问题,我不确定是什么原因造成的。基本上,我使用ErrorFragment类... 查看详情

在 listview Android 1.6 中同时使用 onClickListener 和 onLongClickListener

】在listviewAndroid1.6中同时使用onClickListener和onLongClickListener【英文标题】:UsebothonClickListenerandonLongClickListenerinlistviewAndroid1.6【发布时间】:2011-06-0500:29:07【问题描述】:我将onClickListener和onLongClickListener用于ListView中的TextView 查看详情

java.lang.NullPointerException:尝试在 OnClickListener 中调用虚拟方法 android

】java.lang.NullPointerException:尝试在OnClickListener中调用虚拟方法android【英文标题】:java.lang.NullPointerException:AttempttoinvokevirtualmethodandroidinOnClickListener【发布时间】:2017-04-1100:18:18【问题描述】:我是安卓新手。我试图构建一个简单... 查看详情

Android onClickListener 在复合视图中不起作用

】AndroidonClickListener在复合视图中不起作用【英文标题】:AndroidonClickListenernotworkingincompoundview【发布时间】:2016-08-0117:42:56【问题描述】:我有一个包含以下xml和代码的复合视图。<?xmlversion="1.0"encoding="utf-8"?><mergexmlns:android... 查看详情

Android:无法让 Checkbox OnClickListener 在 ListFragment 中工作

】Android:无法让CheckboxOnClickListener在ListFragment中工作【英文标题】:Android:Can\'tgetCheckboxOnClickListenertoworkinListFragment【发布时间】:2015-10-1816:51:55【问题描述】:我浏览了一些帖子,但无法获得确认点击的复选框。我想我已经完成... 查看详情

如何在 Android 应用程序中为联系我们表单设置 onClickListener

】如何在Android应用程序中为联系我们表单设置onClickListener【英文标题】:HowtosetonClickListnerforcontactusforminandroidapp【发布时间】:2016-11-1212:57:49【问题描述】:我在操作栏上为android应用程序创建了一个联系我们的表单,我已将它... 查看详情

如何在recyclerview中为cardview android设置带有int数组的onclicklistener

】如何在recyclerview中为cardviewandroid设置带有int数组的onclicklistener【英文标题】:howtosetonclicklistenerwithintarrayinrecyclerviewforcardviewandroid【发布时间】:2021-11-2821:49:40【问题描述】:我想使用ifelse语句单击Cardview项目并打算进行其他活... 查看详情

尝试在空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)”

】尝试在空对象引用上调用虚拟方法“voidandroid.widget.Button.setOnClickListener(android.view.View$OnClickListener)”【英文标题】:Attempttoinvokevirtualmethod\'voidandroid.widget.Button.setOnClickListener(android.view.View$OnClickListener)\'onanu 查看详情

XML 中的 Android onClick 与 OnClickListener

】XML中的AndroidonClick与OnClickListener【英文标题】:AndroidonClickinXMLvs.OnClickListener【发布时间】:2014-02-1416:46:27【问题描述】:我知道之前有人问过类似措辞的问题,但这次不同。我在开发android应用程序方面还很陌生,关于android:onc... 查看详情

如何在 Kotlin Android 中为 RecyclerView itemView 中的特定元素实现 onClickListener? [复制]

】如何在KotlinAndroid中为RecyclerViewitemView中的特定元素实现onClickListener?[复制]【英文标题】:HowtoimplementonClickListenerforaspecificelementinsideRecyclerViewitemViewinKotlinAndroid?[duplicate]【发布时间】:2021-08-2106:15:03【问题描述】:我想在RecylerV... 查看详情

我在哪里定义我的 OnClickListener 以关闭 Android 中的自定义对话框视图?

】我在哪里定义我的OnClickListener以关闭Android中的自定义对话框视图?【英文标题】:WheredoIdefinemyOnClickListenertocloseacustomdialogviewinAndroid?【发布时间】:2011-09-3012:00:47【问题描述】:我已经定义了以下自定义对话框视图:publicclassM... 查看详情

RecyclerView OnClickListener(在整个 RV 上)

】RecyclerViewOnClickListener(在整个RV上)【英文标题】:RecyclerViewOnClickListener(OnentireRV)【发布时间】:2017-01-2021:31:58【问题描述】:我的回收站视图:<android.support.v7.widget.RecyclerViewandroid:background="?android:selectableItemBackground"ap 查看详情

Android OnItemClickListener 和 OnClickListener [重复]

】AndroidOnItemClickListener和OnClickListener[重复]【英文标题】:AndroidOnItemClickListenerandOnClickListener[duplicate]【发布时间】:2021-05-2209:48:49【问题描述】:在自定义数组适配器类中(getView方法)在一个活动类中(onCreate方法)无表情的脸... 查看详情

如何为小吃吧 android 中的操作设置 Onclicklistener?

】如何为小吃吧android中的操作设置Onclicklistener?【英文标题】:HowtosetOnclicklistenerforactionsinsnackbarandroid?【发布时间】:2016-10-1218:08:22【问题描述】:我正在尝试在小吃店中设置操作。我有以下代码:Snackbar.make(cb,lvMain.getChildCount(... 查看详情

在片段中实现 onClickListener

】在片段中实现onClickListener【英文标题】:ImplementingonClickListenerinfragments【发布时间】:2021-07-0313:06:45【问题描述】:我正在将旧版Android应用程序从使用不再受支持的ViewPager和已弃用的ActionBar更新为受支持的类。我很难在我的片... 查看详情

Android RecyclerView OnClickListener 没有反应

】AndroidRecyclerViewOnClickListener没有反应【英文标题】:AndroidRecyclerViewOnClickListenernotreacting【发布时间】:2015-09-0412:59:00【问题描述】:好的,所以我在我的项目中使用RecyclerView并且需要为每个列表项实现点击监听器并在每个项目... 查看详情

android listview gettag nullpointexception in imageview onclicklistener

】androidlistviewgettagnullpointexceptioninimageviewonclicklistener【英文标题】:【发布时间】:2015-04-0613:58:28【问题描述】:我正在使用基本适配器。我在列表视图中成功适配了我的适配器。但我有两个问题。在基本适配器的行xml中包含imag... 查看详情