【问题标题】:Trying to open 2 different xml page using 2 different buttons尝试使用 2 个不同的按钮打开 2 个不同的 xml 页面
【发布时间】:2014-01-20 06:19:39
【问题描述】:

我写了以下代码:

public class FragmentFirstPage extends Fragment implements OnClickListener{


View root;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle){

    root = inflater.inflate(R.layout.fragment_page1, container, false); 

    Button bt = (Button) root.findViewById(R.id.button1);
    bt.setOnClickListener(this);

    Button mbt = (Button) root.findViewById(R.id.imageButton1);
    mbt.setOnClickListener(new View.OnClickListener() { 
    final ViewPager viewPager = (ViewPager) getActivity().findViewById (R.id.activity_main_viewpager);

         @Override
          public void onClick (View v){
          viewPager.setCurrentItem (viewPager.getCurrentItem() + 1); //or -1 to go previous

          } 
    });             
    return root;

}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent myIntent = new Intent(getActivity(), SplashActivity.class);
    getActivity().startActivity(myIntent);

}

当我运行它时,它没有显示任何错误,但也不起作用。它显示一条错误消息,说不幸的是应用程序已停止工作。我应该怎么做才能做到这一点,我的 xml 页面有 2 个按钮 button1 打开一个活动,而 imagebutton1 显示下一个片段。这就是我想要达到的目标。

【问题讨论】:

    标签: java android xml eclipse button


    【解决方案1】:

    您需要做的就是在onClick 中通过检查调用视图的ID 来检查单击了哪个按钮。从那里你可以决定每个人会做什么。

    public class beforemain extends Activity implements OnClickListener {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.beforemain);
    
        Button mBtn1 = (Button) findViewById(R.id.button1);
        Button mBtn2 = (Button) findViewById(R.id.button2); //Just like #1
        mBtn1.setOnClickListener(this);
        mBtn2.setOnClickListener(this); //Also like #1
    
    }
    
    @Override
    public void onClick(View v) {
        switch(v.getId()) { //Get the id of the button that was clicked
        case R.id.button1:
            Intent i = new Intent(beforemain.this, Splash1.class);
            startActivity(i);
            break;
        case R.id.button2:
            Intent i = new Intent(beforemain.this, Splash2.class);
            startActivity(i);
            break;
        }
    }
    

    【讨论】:

    • 没问题,很高兴为您提供帮助。
    • 好的,一切正常,但是当我尝试添加声音池时,它永远不会播放曲目。
    • 嗨;你能再看看我刚刚更新的问题,你能帮我解决我的问题吗?
    【解决方案2】:

    改变 onClick 方法的实现如下..

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.beforemain);
    
        Button mBtn1 = (Button) findViewById(R.id.button1);
        mBtn1.setOnClickListener(this);
        Button mBtn2 = (Button) findViewById(R.id.button1);
        mBtn2.setOnClickListener(this);
    
    }
    
    @Override
    public void onClick(View v) {
        if(mBtn1.getId()==v.getID())
       {
        Intent i1=new Intent(beforemain.this, Splash1.class);
        startActivity(i1);
       }
       else
       {
            Intent i=new Intent(beforemain.this, Splash2.class);
            startActivity(i);
       }
    }
    

    【讨论】:

      【解决方案3】:
       Button mBtn1 = (Button) findViewById(R.id.button1);
      Button mBtn2 = (Button) findViewById(R.id.button2); 
      mBtn1.setOnClickListener(this);
      mBtn2.setOnClickListener(this); 
      
      
      
      
       @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  int id = v.getId();
                  switch(id) {
                  case R.id.button1:
      
             Intent i=new Intent(beforemain.this, Splash1.class);
              startActivity(i);
      
                      break;
                  case R.id.button2:
      
          Intent i=new Intent(beforemain.this, Splash2.class);
              startActivity(i);
                      break;
      
              }
      
              }
      

      【讨论】:

        【解决方案4】:

        您只需为所有按钮设置onClickListener,然后在if elseswitch 情况下比较它们的ID,然后做任何你想做的事情

        例如。

        @Override
        public void onClick(View v) 
        {
          if(v.getId()==R.id.button1)
          {
            Intent i=new Intent(beforemain.this, Splash1.class);
            startActivity(i);
          }
          else if(v.getId()==R.id.button2)
          {
            Intent i=new Intent(beforemain.this, Splash2.class);
            startActivity(i);}
          }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-08-06
          • 2022-12-11
          • 2017-07-22
          • 2021-01-01
          • 1970-01-01
          • 2013-12-19
          • 2017-09-22
          • 1970-01-01
          相关资源
          最近更新 更多