与viewPager按钮活动? [英] Button activity with viewPager?

查看:103
本文介绍了与viewPager按钮活动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请不要对我做出判断,我对Android的发展非常新的......我要让与viewPager一个应用程序......我有3个页面,三种不同的布局......但我不能弄清楚如何处理上viewPager第二页的按钮。我发现这个问题,<一href="http://stackoverflow.com/questions/8698789/how-to-write-button-onclick-method-in-viewpager">How在viewpager写按钮的onClick方法,并设置我的codeS这样的:

ViewPagerAdapter:

  @覆盖
公共对象instantiateItem(查看传呼机,INT位置)
{
    视图V =新景(pager.getContext());
    LayoutInflater充气=
            (LayoutInflater)pager.getContext()getSystemService(Context.LAYOUT_INFLATER_SERVICE)。

    INT渣油= 0;
    开关(位置){
    情况下0:
        渣油= R.layout.deneme;
        打破;
    情况1:
        渣油= R.layout.deneme2;
        打破;
    案例2:
        渣油= R.layout.deneme3;
        打破;
    }

    V = inflater.inflate(渣油,NULL);
    ((ViewPager)寻呼机).addView(五,0);

    返回伏;
  }
 

在这里,我得到的错误: 该方法findViewById(INT)是未定义的类型新View.OnClickListener(){}上线

 的LinearLayout L =(的LinearLayout)findViewById(R.id.layout2);
 

和的方法getResources()是未定义的类型新View.OnClickListener(){}上线

  l.setBackgroundDrawable(getResources()getDrawable(R.drawable.background)。);
 

主要:

 公共类ViewPagerProjectActivity延伸活动{

 按钮BTN;
 查看deneme2lout;

@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);

    ViewPagerAdapter适配器=新ViewPagerAdapter(本);
    ViewPager寻呼机=(ViewPager)findViewById(R.id.viewpager);
    pager.setAdapter(适配器);
    pager.setCurrentItem(0);


    LayoutInflater getView = getLayoutInflater();
    deneme2lout =(查看)getView.inflate(R.layout.deneme2,NULL);
    BTN =(按钮)deneme2lout.findViewById(R.id.button1);

}

公共无效buttonClick(视图v){
    如果(v.equals(BTN)){
    deneme2lout.setBackgroundDrawable(getResources()getDrawable(R.drawable.background));
    }
}

 }
 

因此​​,正如我得到的,我不能用这两个codeS ......那么应该怎么办呢?我需要改变第二页的背景时,点击第二个布局的按钮。

这是我的deneme2.xml codeS:

 &LT; XML版本=1.0编码=UTF-8&GT?;
&LT; AbsoluteLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:ID =@ + ID /布局2
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:方向=垂直&GT;

    &LT;按钮
        机器人:ID =@ + ID /按钮1
        机器人:layout_width =175dp
        机器人:layout_height =95dp
        机器人:layout_x =69dp
        机器人:layout_y =174dp
        机器人:TEXTSIZE =25dp
        机器人:文本=更改/&GT;

&LT; / AbsoluteLayout&GT;
 

解决方案

这是因为,因为它解释,OnClickListener没有你使用的是内部的OnClickListener这两种方法。替换:

 的LinearLayout L =(的LinearLayout)findViewById(R.id.layout2);
 

 的LinearLayout L =(的LinearLayout)v.findViewById(R.id.layout2);
 

如果它接着说v应该是最终的,应该没问题。并替换:

  getResources()。getDrawable(R.drawable.background)
 

  ViewPagerAdapter.this.context.getResources()。getDrawable(R.drawable.background)
 

Please don't judge me, i'm extremely new on android developing... I wanna make an app with viewPager... I've got three pages with three different layouts... But i just couldn't figure out how to deal with a button on second page on viewPager. I found this question " How to write button onClick method in viewpager? " and set my codes like this:

ViewPagerAdapter:

@Override
public Object instantiateItem( View pager, int position )
{
    View v = new View(pager.getContext());
    LayoutInflater inflater =
            (LayoutInflater) pager.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    int resId = 0;
    switch (position) {
    case 0:         
        resId = R.layout.deneme;            
        break;
    case 1:
        resId = R.layout.deneme2;          
        break;
    case 2:
        resId = R.layout.deneme3;
        break;   
    }

    v = inflater.inflate(resId, null);
    ((ViewPager) pager).addView(v, 0);

    return v;
  }

Here I'm getting errors: "The method findViewById(int) is undefined for the type new View.OnClickListener(){}" on line

 LinearLayout l = (LinearLayout) findViewById(R.id.layout2); 

and "The method getResources() is undefined for the type new View.OnClickListener(){}" on line

 l.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));

Main:

 public class ViewPagerProjectActivity extends Activity {

 Button btn;
 View deneme2lout;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ViewPagerAdapter adapter = new ViewPagerAdapter( this );
    ViewPager pager = (ViewPager)findViewById( R.id.viewpager );
    pager.setAdapter( adapter );
    pager.setCurrentItem(0);


    LayoutInflater getView = getLayoutInflater();
    deneme2lout = (View) getView.inflate(R.layout.deneme2,null);      
    btn = (Button) deneme2lout.findViewById(R.id.button1);

}

public void buttonClick(View v) {
    if(v.equals(btn)) {
    deneme2lout.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));
    }
}

 }

So as i get, i cannot use those two codes... So how should i do it? I need to change background of the second page when clicked the button on second layout.

And here's my deneme2.xml codes:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="175dp"
        android:layout_height="95dp"
        android:layout_x="69dp"
        android:layout_y="174dp"
        android:textSize="25dp"
        android:text="Change" />

</AbsoluteLayout>

解决方案

That's because, as it explains, OnClickListener doesn't have these two methods which you're using inside an OnClickListener. Replace:

LinearLayout l = (LinearLayout) findViewById(R.id.layout2);

with

LinearLayout l = (LinearLayout) v.findViewById(R.id.layout2);

if it then says v should be final, that should be okay. And replace:

getResources().getDrawable(R.drawable.background)

with

ViewPagerAdapter.this.context.getResources().getDrawable(R.drawable.background)

这篇关于与viewPager按钮活动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆