安卓Eclipse按钮OnClick事件

5
我可以帮您翻译成中文。这段内容是关于编程的,涉及两个文件:main_activity.xml和home.xml。在main_activity.xml中创建了一个按钮。
以下是代码片段:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:background="@drawable/splash_background"
 android:layout_height="match_parent"
 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_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="match_parent"
    android:background="@drawable/app_bg"
    android:layout_height="match_parent"
    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>

这就是我所有的内容了。如果您回复,请告诉我在哪里添加代码,例如目录或者代码片段之间。

1
除非您使用类似MonoDroid或其他应用程序构建替代方案,否则Java是开发Android应用程序的基本要求。如果您不了解Java,则建议您首先学习它。 - Michael Celey
6个回答

8
为了管理Android中的点击活动,您可以按照以下步骤进行操作:
  1. Implement OnClickListener on YourActivity.java class like

    public class MainActivity extends Activity implements OnClickListener

  2. Then, declare your button in .java class like

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

  3. Then use button btn variable as below

    btn.setOnClickListener(new View.OnClickListener() {
    
        public void onClick(View v) {
            myClick(v); /* my method to call new intent or activity */
        }
    });
    
  4. Handle the click event:

    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_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

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

1

创建另一个类,转到您的项目,右键单击,然后单击“类”,并创建Home。在该Home类文件中,扩展activity并添加以下代码:

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

在“闪屏活动类”中添加以下行:

add this line


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

在你的 Android 清单文件中添加主屏幕活动类。

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

不要使用int,它是Java中的保留字,也可能是几乎所有其他编程语言中的保留字 ;) - codeMagic
没问题,这样更好 :) - codeMagic
@codeMagic,OP已经离线了,我在这个问题上遇到了一些麻烦。如果你有TeamViewer,能帮我解决一下吗?我会在这里发布我的会话信息。 - Jacob Anthony Tonna
抱歉,我现在无法提供帮助。你应该有足够的信息开始了。稍后我可以尝试回答你可能有的任何问题。 - codeMagic
在启动活动类中添加@codeMagic这一行代码。这让我感到困惑,因为我不知道你要我做什么,我没有任何名为那个的文件。 - Jacob Anthony Tonna
@user1978141 这是因为我没有写这个答案。我只是在评论中提出了一些意见,以使其更加正确。请查看我的答案,我相信它会给出必要的链接,帮助您理解该怎么做,并提供描述性信息。 - codeMagic

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

0

我会给你一点点的指引,让你开始使用onClick(),这个答案也可能帮助到其他遇到问题的人,但是你真的需要学习Java并仔细阅读Android文档,这样你才能提出更好的问题。

你需要阅读这里关于Activities以及如何创建它们的内容。然后在你的代码中,你将拥有一个函数。

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

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

但是,你真的需要仔细阅读文档并进行一些教程,以了解Android框架的操作方式,并学习Java以使你的生活更加轻松。除了我提供的前两个链接外,还可以参考this post关于点击事件的不同使用方法,因为有不同的方法来使用onClick()

我希望这足以让你开始,并且我真的希望你通过文档来更好地理解你正在做的事情。祝你好运!

另一个重要的入门链接

Intents


0

android:onClick在API级别4中添加,以使其更易于使用,更像Javascript-web,并且可以从XML驱动所有内容。它在内部的操作是在Button上添加一个OnClickListener,该监听器调用您的主页方法。

<Button
  android:id="@+id/Home"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  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_width="wrap_content"
  android:layout_height="wrap_content"
  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
  }
});   

两者完全相同


接近了,但如果您在程序中实现onClickListener,则不应该使用android:onClick="home"。它将寻找一个带有签名public void home(View v)的函数。 - codeMagic
我提供了两种方法来做同样的事情。可以使用第一种或第二种方式。不过,我建议使用第二种方式(以编程方式调用按钮监听器)。 - Raghunandan
我理解你的意思,但是两个地方都有 android:onClick="home"。我的意思是,如果你采用第二种方式(以编程方式),那么你就不需要在xml中加入这一行。具体采用哪种方式取决于你对它的使用方式。是的,似乎这是最流行的、也可能是“最好”的选择,但我根据具体情况而定,有时会同时使用两种方式。 - codeMagic
@codeMagic同意了,我从XML中删除了第二种方法的那一行。 - Raghunandan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接