0

我有一個ViewPager我試圖應用onLongClickListener來改變從不活動的活動的片段。查看傳呼機與OnLongClickListener不起作用

mPager1.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
    onViewPagerClick(); 
     return false; 
    } 
}); 

片段置換:

public void onViewPagerClick() { 
    FragmentTransaction ft5 = getSupportFragmentManager().beginTransaction(); 
    fragment = new SingleProductFragment(); 
    container.setVisibility(View.VISIBLE); 
    ft5.add(R.id.container, fragment); 
    // ft.addToBackStack(null); 
    ft5.commit(); 
    sv.setVisibility(View.INVISIBLE); 
    addButton.setVisibility(View.INVISIBLE); 
} 
+0

請你可以寫更多的代碼 – Matteo

+0

我已經把代碼在我的Activity類中的onCreate – user8601021

+0

你試過[例如](https://stackoverflow.com/a/46707510/8244632)的答案? –

回答

0

ViewPager不會消耗單擊事件,所以要儘量設置監聽器上的圖像或容器佈局,而不是viewPager的instantiateItem()

UPDATE

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
LayoutInflater inflater = LayoutInflater.from(MainActivity.this); 
ViewGroup viewPagerItem = (ViewGroup)inflater.inflate(R.layout.viewPager_item, container, false); 
ImageView imageView = (ImageView)viewPagerItem.findViewById(R.id.imageView); 
viewPagerItem.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View view) { 
     Toast.makeText(MainActivity.this, "TEST", Toast.LENGTH_LONG).show(); 

     return false; 
    } 
    }); 

    container.addView(viewPagerItem); 

    return viewPagerItem; 
} 
+0

我試過它在容器上,因爲它是在一個嚴謹的佈局,但它不工作 – user8601021

+0

如果你試過來自'instantiateItem'方法的'container'變量,該變量是viewPager。在我的建議中,我的意思是你的imageView的容器佈局。我用一個例子更新了答案。它應該以這種方式:) – Laura

+0

我想要替換一個片段,但是當我在視圖中使用getFragmentManager()方法時,尋呼機適配器android studio無法識別該方法 – user8601021

相關問題