使用可点击图片的菜单?

时间:2016-06-20 16:54:32

标签: java android

我尝试使用可点击的图片创建菜单,但它们似乎无法正常工作?我正在学习一个教程,它使用类似

的东西
Intent biodata = new Intent(mainActivity.this, profile.class);

但它没有工作,所以我试图寻找别的东西,有人说要使用v.getContext()instad ....这个

它适用于我的其他页面,但它在此页面上无效?

mainActivity.java

package skripsi.garden;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;

public class mainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public ImageButton buttonBio;

    public void init(){
        buttonBio= (ImageButton)findViewById(R.id.buttonBio);
        buttonBio.setOnClickListener(new View.OnClickListener() {
                                         @Override
                                         public void onClick(View v) {
                                             Intent biodata = new     Intent(v.getContext(), profile.class);

                                             startActivity(biodata);
                                         }
                                     }


        );
    }

    public ImageButton buttonList;

    public void tombollist(){
        buttonList=(ImageButton)findViewById(R.id.buttonList);
        buttonList.setOnClickListener(new View.OnClickListener() {
                                          @Override
                                          public void onClick(View v) {
                                              Intent listTaman = new Intent(v.getContext(), gardenlist.class);

                                              startActivity(listTaman);
                                          }
                                      }


        );
    }

    public ImageButton buttonWeather;

    public void tombolcuaca(){
        buttonWeather=(ImageButton)findViewById(R.id.buttonWeather);
        buttonWeather.setOnClickListener(new View.OnClickListener() {
                                             @Override
                                             public void onClick(View v) {
                                                 Intent cuaca = new Intent(v.getContext(), weather.class);

                                                 startActivity(cuaca);
                                             }
                                         }
        );
    }
}

这是xml activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/foliagemain"
    tools:context="skripsi.garden.mainActivity">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView3"
        android:src="@drawable/selamatdatang"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonBio"
        android:src="@drawable/buttonbiodata"
        android:layout_above="@+id/buttonList"
        android:layout_alignRight="@+id/buttonWeather"
        android:layout_alignEnd="@+id/buttonWeather" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonList"
        android:src="@drawable/buttondaftartaman"
        android:layout_above="@+id/buttonHelp"
        android:layout_alignLeft="@+id/buttonHelp"
        android:layout_alignStart="@+id/buttonHelp" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonHelp"
        android:src="@drawable/buttonhelp"
        android:layout_above="@+id/buttonWeather"
        android:layout_alignLeft="@+id/buttonBio"
        android:layout_alignStart="@+id/buttonBio" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonWeather"
        android:src="@drawable/buttoncuaca"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />



</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

将您的按钮放在onCreate方法中。他们不需要采用自己的方法。

public class mainActivity extends AppCompatActivity {

    public ImageButton buttonBio;
    public ImageButton buttonList;
    public ImageButton buttonWeather;

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


        buttonBio= (ImageButton) findViewById(R.id.buttonBio);
        buttonBio.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent biodata = new Intent(mainActivity.this, profile.class);
                startActivity(biodata);
            }
        });

        buttonList=(ImageButton)findViewById(R.id.buttonList);
        buttonList.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent listTaman = new Intent(mainActivity.this, gardenlist.class);
                startActivity(listTaman);
            }
        });

        buttonWeather=(ImageButton)findViewById(R.id.buttonWeather);
        buttonWeather.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent cuaca = new Intent(mainActivity.this, weather.class);
                startActivity(cuaca);
            }
        });
    }
}

答案 1 :(得分:0)

在设置布局后,您可以在活动的init()方法中调用方法tombollist()tombolcuaca()onCreate

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        tombollist();
        tombolcuaca()
    }

这会初始化按钮以执行onClick内写的操作。

如果未调用这些方法,则不会初始化该按钮,因此点击将无效。

您还可以在imageButtons中使用android:clickable="true",然后将点击功能init()指定给布局xml中的按钮。

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonBio"
        android:src="@drawable/buttonbiodata"
        android:layout_above="@+id/buttonList"
        android:layout_alignRight="@+id/buttonWeather"
        android:layout_alignEnd="@+id/buttonWeather"
        android:clickable="true"
        android:onClick="init"/>

然后您不需要初始化活动中的按钮。单击该按钮,将调用该方法。