[英]Android start new activity when clicking widget
我是为Android应用程序编码Java和xml的新手,我想知道如何在单击某些内容时启动/打开新活动。 在这种情况下,我使用相对布局将图像和文本作为一个对象保持在一起。 我想做的是,当您单击它时,它将启动/打开新活动。 我该怎么做呢? 有人可以一步一步告诉我,因为我对此很陌生。
首先,如果要让布局像按钮一样操作( RelativeLayout
)(不处理onClick
on布局子组件),请首先在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);
}
}
UPDATE
布局是在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(.....)
}
但是,这是您必须知道的非常基本的事情。
您可以为任何视图设置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));
}
});
通过创建一个Intent
然后调用startActivity
启动一个新的活动,例如
Intent intent = new Intent(context, AnotherActivity.class);
context.startActivity(intent);
您可以按照其他应答者的建议将此代码包装在OnClickListener
中。
第二个选项是将android:onClick
属性添加到您的RelativeLayout
<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 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.