在AndoridManifest.xml中定义OnClickListener

时间:2013-01-27 05:13:45

标签: java android button android-manifest

我已经使用OnClickListener来链接我的menu.java文件中的所有按钮,并将其定义在Manifest中,但按钮不起作用。我想我可能已经把它放在了Manifest中了。

Menu.java

package com.invoice;

import android.app.Activity;
import android.os.Bundle;
import android.view.View.OnClickListener;
import android.view.View;
import android.widget.Button;

public class menu extends Activity implements OnClickListener {
    /** called the activity is first created. */
    Button button1, button2, button3, button4, button5;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button1 = (Button)findViewById(R.id.button1);
        button2 = (Button)findViewById(R.id.button2);
        button3 = (Button)findViewById(R.id.button3);
        button4 = (Button)findViewById(R.id.button4);
        button5 = (Button)findViewById(R.id.button5);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
        button5.setOnClickListener(this);
    }   
    public void onClick(View v) {
        //TODO Auto-generate method stub
        //figure out which button was pressed
        switch (v.getId()) {
        case R.id.button1:
            //do button1 action
            break;
        case R.id.button2:
            //do button2 action
            break;
        case R.id.button3:
            //do button3 action
            break;
        case R.id.button4:
            //do button4 action
            break;
        case R.id.button5:
            //do button5 action
            break;
        }


        }
    }

对应的Java文件(每个按钮都有单独的java文件)

package com.invoice;


import android.app.Activity;
import android.os.Bundle;

public class Job extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.job);
    }

}

我为Manifest中的每个按钮添加的内容:

<activity android:name=".Help"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="com.invoice.help" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            </activity> 

1 个答案:

答案 0 :(得分:1)

您需要调用startActivity方法在每次点击按钮时启动活动:

public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            //do button1 action

            // start next activity here
            Intent intent=new Intent(menu.this,Job.class);
            startActivity(intent);
            break;
         ///.... same for all buttons 

        }
   }

并且您必须在AndroidManifest.xml中注册所有活动,然后才能将其用作:

<activity android:name=".menu"
   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=".Help" />
<activity android:name=".Job" />
//.....same for others