简体   繁体   English

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

[英]Android start new activity when clicking widget

I am new with coding Java and xml for android applications and I wanted to know how I start/open a new activity when clicking on something. 我是为Android应用程序编码Java和xml的新手,我想知道如何在单击某些内容时启动/打开新活动。 In this case I am using a relative layout to keep a image and text together as one object. 在这种情况下,我使用相对布局将图像和文本作为一个对象保持在一起。 What I want to do is when you click on it it will start/open the new activity. 我想做的是,当您单击它时,它将启动/打开新活动。 How do I do this? 我该怎么做呢? Could someone tell me step by step since I am quite new to this. 有人可以一步一步告诉我,因为我对此很陌生。

First of all, if you want your layout to act ( RelativeLayout ) like a button (do not handle onClick on layout child components) firstly set in your xml layout file RelativeLayout attribute 首先,如果要让布局像按钮一样操作( RelativeLayout )(不处理onClick on布局子组件),请首先在xml布局文件RelativeLayout属性中设置

android:clickable="true"

Or you can do this directly in your code (in onCreate method) 或者,您可以直接在代码中执行此操作(在onCreate方法中)

relativeLayout.setClickable(true);

Than you need to set onClickListener for your layout. 比您需要为布局设置onClickListener
You can do this simply by creating anonymous class 您只需创建匿名类即可完成此操作

relativeLayout.setOnClickListener(new OnClickListener() 
         {

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

UPDATE UPDATE

Layout is defined in xml file, of course in Android you can do this in code ,but it is better to use xml file. 布局是在xml文件中定义的,当然,在Android中,您也可以在代码中执行此操作,但是最好使用xml文件。

In your IDEA you have folder res->layout here you should place your layout files. 在您的IDEA中,您有一个res->layout文件夹,您应该在其中放置布局文件。 For example layout with name ` 例如名称为`的布局

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>

But in case you have only text and image it is better to use 但如果您只有文字和图片,则最好使用

<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>

How you can access your widgets ? 如何访问小部件?
This is very basic thing you have to know if you are developing for android, this is essential part. 如果您是为Android开发的,这是非常基本的事情,这是必不可少的部分。 Please read documentation, read books, watch tutorial or whatever. 请阅读文档,阅读书籍,观看教程或其他内容。

In short you need to inflate layout in activity onCreate() method RelativeLayout mRelativeLayout; 简而言之,您需要在活动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(.....)

}

But again this very basic things you must know. 但是,这是您必须知道的非常基本的事情。

You could set onClickListener for any of your views. 您可以为任何视图设置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));
    }
});

Starting a new activity is done by creating an Intent and then calling startActivity , eg 通过创建一个Intent然后调用startActivity启动一个新的活动,例如

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

You can wrap this code in an OnClickListener as other answerers already suggested. 您可以按照其他应答者的建议将此代码包装在OnClickListener中。

A second option is to add an android:onClick attribute to your RelativeLayout 第二个选项是将android:onClick属性添加到您的RelativeLayout

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

and in your activity 和你的活动

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);
    }
}

See startactivity for a complete example. 有关完整示例,请参见startactivity

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM