单击小部件时,Android会启动新活动

时间:2015-05-31 20:20:46

标签: java android xml android-studio

我是为Android应用程序编写Java和xml的新手,我想知道在点击某些内容时如何开始/打开一个新活动。在这种情况下,我使用相对布局将图像和文本保持为一个对象。我想要做的是当你点击它时它将开始/打开新的活动。我该怎么做呢?有人可以一步一步地告诉我,因为我对此很陌生。

3 个答案:

答案 0 :(得分:1)

首先,如果您希望布局像按钮一样行动(RelativeLayout)(不要在布局子组件上处理onClick)首先在xml布局文件RelativeLayout中设置属性

android:clickable="true"

或者您可以直接在代码中执行此操作(在onCreate方法中)

relativeLayout.setClickable(true);

您需要为布局设置onClickListener 您只需创建匿名类

即可
relativeLayout.setOnClickListener(new OnClickListener() 
         {

            @Override
            public void onClick(View v)
             {
              Intent startActivityIntent = new Intent(getApplicationContext(),YourDesiredActivity.class);
              startActivity(startActivityIntent);
             }
          }

更新

布局是在xml文件中定义的,当然在Android中你可以在代码中执行此操作,但最好使用xml文件。

在您的IDEA中,您有文件夹res->layout,您应该放置您的布局文件。例如名称为“

”的布局

<强> relative_root_layout.xml

    <xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/relative_layout"
android:layout_height="wrap_content" android:layout_width="wrap_content">
        <ImageView
          android:id="@+id/image_view">
          android:layout_width="wrap_content"
          android:src="@drawable/icon"
          android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
        ImageView>
        <TextView
          android:id="@+id/text_view"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textSize="20sp"
          android:layout_toRightOf="@+id/image_view"
          android:text="Relative layout">
       TextView>
    RelativeLayout>

但如果您只有文字和图片,最好使用

<Button
 android:id="@+id/button"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:drawableLeft="@android:drawable/btn_image"
 android:text="Button with Image"
 android:gravity="left"
 android:drawablePadding="10dp">
Button>

如何访问小部件?
如果您正在为Android开发,这是非常基本的事情,这是必不可少的部分。请阅读文档,阅读书籍,观看教程或其他任何内容。

简而言之,您需要在活动onCreate()方法中扩充布局 RelativeLayout mRelativeLayout;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.relative_root_layout);
        mRelativeLayout = (RelativeLayout) findViewById(R.id.relative_layout);
        mRelativeLayout.setOnClickListener(.....)

}

但这又是你必须知道的非常基本的事情。

答案 1 :(得分:0)

您可以为任何观看次数设置onClickListener

ImageView image = (ImageView) findViewById(R.id.image);
image.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(Youractivity.this, Moveactivity.class));
    }
});

答案 2 :(得分:0)

通过创建Intent然后调用startActivity来完成新活动。

Intent intent = new Intent(context, AnotherActivity.class);
context.startActivity(intent);

您可以将此代码包装在OnClickListener中,与其他已建议的回答者一样。

第二个选项是向RelativeLayout添加android:onClick属性

<RelativeLayout ...
                android:onClick="clickMe">
    <ImageView .../>
    <TextView .../>
</RelativeLayout>

并在您的活动中

public class MyActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void clickMe(View notused) {
        Intent intent = new Intent(this, AnotherActivity.class);
        this.startActivity(intent);
    }
}

有关完整示例,请参阅startactivity