簡體   English   中英

單擊小部件時,Android啟動新活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM