【问题标题】:Button doesn't open new activity按钮不打开新活动
【发布时间】:2019-03-07 06:31:29
【问题描述】:

我有一个带有 viewpager 的“inicio”活动,并且在 viewpager 内的一个页面中有一个按钮,但是当我点击它时没有任何反应。

我已经尝试了我在互联网上找到的所有模式,因为它没有任何反应或“已停止工作”

我不知道该怎么办。这是最简单的事情(打开一个活动) 但不知道为什么它不起作用....

我认为它可能是由 viewpager 在后台打开的...

原创。爪哇

package com.example.vamaro.vamaroapp;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import com.example.vamaro.vamaroapp.R;

public class inicio extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_inicio);
        ViewPager viewPager = (ViewPager)findViewById(R.id.iniciopagerp);
        viewPager.setAdapter(new inicioAdapter());

    }
    public class inicioAdapter extends PagerAdapter{
            LayoutInflater layoutInflater;
            int[] layouts={R.layout.inicioslide,R.layout.activity_casasslide,R.layout.deptoslide};
            @Override
    public int getCount(){
                return layouts.length;
            }
            @Override
    public boolean isViewFromObject(View view, Object object) {
           return (view==(LinearLayout)object);
            }
            @Override
    public Object instantiateItem(ViewGroup container,int position) {
                layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View vamaro1 = layoutInflater.inflate(R.layout.inicioslide, container,false);
                View vamaro2 = layoutInflater.inflate(R.layout.activity_casasslide, container,false);
                View vamaro3 = layoutInflater.inflate(R.layout.deptoslide, container,false);
                View viewarr[] = { vamaro1,vamaro2,vamaro3};
                container.addView(viewarr[position]);
                return viewarr[position];
            }
            @Override
            public void destroyItem(ViewGroup container,int position, Object object){
                container.removeView((LinearLayout)object);
            }

}
}

还有 casasslider 。爪哇

package com.example.vamaro.vamaroapp;

import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class casasslide extends AppCompatActivity {
private Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_casasslide);
        btn = (Button) findViewById(R.id.butt);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openActivityTotalC();
            }
        });
    }
    public void openActivityTotalC(){
        Intent i = new Intent(this, TotalCasas.class);
        casasslide.this.startActivity(i);
    }
}

【问题讨论】:

  • 请显示错误日志
  • @Blood21 我建议你开始调试代码,看看你到达了哪一部分,哪一部分没有。活动是否创建?按钮是否实例化?按钮的回调onClick()是否输入?
  • 在此处发布您的错误日志
  • 它与javascript有什么关系?

标签: java android android-button


【解决方案1】:

你说你的buttonviewpager 页面之一内

但是你已经在casasslide activity 中定义了你的button

那么view pager 页面在哪里?

viewPager 中应该有一个fragment 具有buttonbutton 应该在那里定义,而不是在 casasslide

【讨论】:

  • 它不是没有fragment:o inicio 有viewpager
  • 你只是在使用 casasslide 布局,而不是它的活动。您应该定义 inicio 活动中的按钮,或者您的布局分配给它的单个片段。不要忘记将片段传递给 viewpager,而不是布局
  • idk 为什么我对这个很疯狂....太简单了! xd感谢Mohamad Rostami,我必须在viewpager的java中定义它而不是在布局的java中,因为它没有被使用......谢谢
【解决方案2】:

这已经是你不需要编写 getactivity() 或任何东西的活动了。

就这个

Intent I = new Intent (this,Next.class);
startActivity(i);

如果可以,则调试您的代码并检查是否调用了 onclick()

编码愉快!!!

【讨论】:

    【解决方案3】:

    从此改变

    public void openActivityTotalC(){
        Intent i = new Intent(this, TotalCasas.class);
        casasslide.this.startActivity(i);
    }
    

    到这里

    public void openActivityTotalC(){
        Intent i = new Intent(this, TotalCasas.class);
        startActivity(i);
    }
    

    它应该可以解决问题。否则,您可能需要发布错误日志,以便其他人可以帮助您调试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2015-02-25
      相关资源
      最近更新 更多