簡體   English   中英

方法onFocusChangeListener只調用一次

[英]method onFocusChangeListener called only once

我正在開發示例應用程序以測試OnFocusChangeListener ,我在它的方法public void onFocusChange(View v, boolean hasFocus)上保持調試點,我觀察到該方法只被調用一次,即在啟動應用程序之后public void onFocusChange(View v, boolean hasFocus)它很好但是當我向下滾動到下一個列表項,項目已集中但未調用方法。 我知道我錯過了一些小事。 能幫我擺脫這個問題嗎? 提前致謝。

注意使用遙控器的D-Pad完成滾動

java類:

package com.example.listview;

import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ListActivity extends Activity implements OnFocusChangeListener{
    String[] items={"iOS","android","Symbian",};
    //GridView lst;
    ListView lst;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        lst=(ListView)findViewById(R.id.listView1);

        lst.setFocusableInTouchMode(false);

        ArrayAdapter<String> adapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,items);
        lst.setAdapter(adapter);


        }



    public void onFocusChange(View v, boolean hasFocus) {

        Toast.makeText(getBaseContext(), "FOCUSED", Toast.LENGTH_LONG).show();      
    }
}

使用跟蹤球或遙控器使其高亮顯示時調用焦點(不觸摸。例如可以在Android電視中使用左,上,下,右按鈕進行導航。)

你需要一個onItemSelected來進行選擇。 onItemClickListener用於單擊。

我找到了解決問題的方法,但我仍然不知道為什么OnFocuschangeListener無法正常工作? 我通過實現OnItemSelectedListener解決了這個問題

package com.example.listview;

import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ListActivity extends Activity implements OnItemSelectedListener{
    String[] items={"iOS","android","Symbian",};
    //GridView lst;
    ListView lst;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        lst=(ListView)findViewById(R.id.listView1);

        lst.setFocusableInTouchMode(false);

        ArrayAdapter<String> adapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,items);
        lst.setAdapter(adapter);


        }



    @Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
        long id)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM