android eclipse 按钮​​ OnClick 事件

Posted

技术标签:

【中文标题】android eclipse 按钮​​ OnClick 事件【英文标题】:android eclipse button OnClick event 【发布时间】:2013-02-28 21:29:15 【问题描述】:

我有 2 个文件:main_activity.xml 和 home.xml。我在 main_activity.xml 中做了一个按钮

这里是sn-p的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_
 android:background="@drawable/splash_background"
 android:layout_
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context=".MainActivity" >

<Button
    android:id="@+id/Home"
    android:layout_
    android:layout_
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginRight="43dp"
    android:onClick="home"
    android:text="Home" />

</RelativeLayout>

然后,我有了 home.xml。我希望按钮打开 home.xml。我怎样才能做到这一点? 我不知道任何java,而且我是android开发的新手。

下面是我的 home.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:background="@drawable/app_bg"
    android:layout_
    android:orientation="vertical" >


</LinearLayout>

下面是我的 AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.idozer"
 android:versionCode="1"
 android:versionName="1.0" >

 <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

 <application
    android:allowBackup="false"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.idozer.SplashActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="com.example.idozer.MainActivity"
        android:label="@string/app_name" >
    </activity>
</application>
</manifest>

这就是我所拥有的。如果您回复,请告诉我在哪里添加代码,例如目录或代码sn-ps之间。

【问题讨论】:

除非您使用像 MonoDroid 或其他一些应用程序构建替代方案,否则 Java 是开发 Android 应用程序的一个非常基本的要求。如果您不了解 Java,那么我建议您先学习。 【参考方案1】:

为了在android中管理点击活动,你可以这样做

    YourActivity.java 类上实现 OnClickListener,例如

    public class MainActivity extends Activity implements OnClickListener

    然后,在 .java 类中声明您的按钮,如

    Button btn = (Button) findViewById(R.id.btnPlay);

    然后使用按钮btn变量如下

    btn.setOnClickListener(new View.OnClickListener() 
    
        public void onClick(View v) 
            myClick(v); /* my method to call new intent or activity */
        
    );
    

    处理点击事件:

    public void myClick(View v) 
        Intent intent = new Intent(**this, Swipe.class**);
        startActivity(intent);// for calling the activity
    
    

您还需要在android manifest 中注册您的活动(.java),如下所示

<activity
    android:name=".Swipe"
    android:screenOrientation="landscape" >
</activity>

【讨论】:

【参考方案2】:

您可以使用此代码。

Android:OnClickListener

在我们的活动类中,我们添加了 onclick 方法。

在我们的活动类中,我们添加了 onclick 方法。

    //On click event for button1
public void button1OnClick(View v) 
    //Inform the user the button has been clicked
    Toast.makeText(this, "Button1 clicked.", Toast.LENGTH_SHORT).show();               

在布局文件中,我们添加对 onclick 处理程序的引用 活动。该应用程序将自动将 onclick 方法绑定到 查看(在本例中为 button1)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical">

        <Button
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:text="@string/button1"
            android:onClick="button1OnClick"/>
</LinearLayout>

【讨论】:

【参考方案3】:

创建另一个类转到您的项目右键单击并单击类并创建主页。 在那个 Home 类文件中扩展活动并添加这样的代码

public class Home extends Activity 
  @Override
  public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home);
  

splash活动类添加这一行

Intent intent = new Intent(SplashActivity.this,Home.class);
startActivity(intent);

在你的 android 清单文件中添加 Home 活动类

<activity android:name="com.example.idozer.Home"
    android:label="@string/app_name" >
</activity>

【讨论】:

不要使用 int,它是 Java 和几乎所有其他语言中的保留字;) 没问题,这样更好:) @codeMagic 操作已离线,我对此有点问题。如果你有团队 viwer,你能帮帮我吗?生病在这里发布我的会话信息 对不起,我现在不能。你应该有足够的东西让你开始。我可以尝试回答您以后可能遇到的任何问题 @codeMagic 在启动活动类中添加这一行。这让我很困惑,因为我不知道你对我意味着什么,我没有任何名为的文件。【参考方案4】:

我会给你一点点让你开始,因为这个答案可能会帮助其他在使用onClick() 时遇到问题的人,但你确实需要学习 Java 并通过 Android Docs 这样你就可以提出更好的问题

您需要阅读Here 关于Actviities 以及如何创建它们。然后在你的代码中你将有一个函数

 public void home(View v)  //the name of this function comes from where you declared in your manifest `android:onClick="home"

     Intent intent (MainActivity.this, HomeActivity.class); //MainActivity is the name of current activity and HomeActivity is the name of the activity you want to start
     can add intent extras/flags/categories here
     startActivity(intent);

您还需要在manifest 中添加HomeActivity,就像在其他Activities 中一样。

但是您确实需要阅读文档并完成一些教程才能了解 Android 框架的运行方式,并且您需要学习 Java 以使您的生活更轻松。除了我之前给出的两个链接,还可以查看this post关于点击事件,因为有不同的方式使用onClick()

我希望这足以让您入门,并且我真的希望您阅读文档以更好地了解您在做什么。祝你好运!

另一个重要的入门链接

Intents

【讨论】:

【参考方案5】:

android:onClick 被添加到 API 级别 4 中,以使其更容易、更像 javascript 网络,并从 XML 驱动一切。它在内部做的是在Button 上添加一个OnClickListener,它调用你的home 方法。

<Button
  android:id="@+id/Home"
  android:layout_
  android:layout_
  android:layout_alignParentRight="true"
  android:layout_alignParentTop="true"
  android:layout_marginRight="43dp"
  android:onClick="home"
  android:text="Home" />

.

public void home(View view)
  Intent intent=new Intent (view.getContext(),Luton.class);
  this.startActivity(intent);

在你的活动课上

使用 java 代码,您可以通过从 xml 获取按钮的 id 来执行按钮单击。

<Button
  android:id="@+id/myHomeButton"
  android:layout_
  android:layout_
  android:layout_alignParentRight="true"
  android:layout_alignParentTop="true"
  android:layout_marginRight="43dp"
  android:text="Home" />

.

Button button= (Button) findViewById(R.id.myHomeButton);
button.setOnClickListener(new View.OnClickListener() 
  @Override
  public void onClick(View v) 
     //do whatever you want on button click
  
);   

两者完全相同

【讨论】:

关闭,但您不希望以编程方式使用android:onClick="home" if you are implementing the onClickListener`。它将寻找签名为 public void home(View v) 的函数 我给了 2 种方法来做同样的事情。使用第一个或第二个。但是我建议使用第二种方式(以编程方式调用按钮侦听器) 我了解,但您在两者中都有 android:onClick="home"。我的意思是,如果您采用第二种方式(以编程方式),那么您不希望在 xml 中使用该行。采用哪种方法实际上取决于您使用它做什么。是的,它似乎是最受欢迎的,而且通常可能是“最佳”选择,但我会根据我的用途使用这两种选择 @codeMagic 同意我删除了第二种方式的行格式 xml。【参考方案6】:
Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View view) 
            Toast.makeText(MainActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
        
    );

【讨论】:

以上是关于android eclipse 按钮​​ OnClick 事件的主要内容,如果未能解决你的问题,请参考以下文章

android eclipse 按钮​​ OnClick 事件

Eclipse 中所有 API 级别的 Android 5.0 FAB 按钮

Android Eclipse - 单击时创建另一个按钮的按钮

使用 Eclipse 的 Android 应用程序 - 创建按钮数组

eclipse中jframe如何使用,怎么创建按钮对应的事件,是设置,还是敲代码

Android Eclipse DDMS 更新堆按钮已禁用