如何添加onclicklistener android

时间:2013-10-09 11:05:15

标签: android xml class

好的,所以我的Android应用程序的主页上有多个按钮。

我似乎一直困惑,因为我已经像这样编写了应用程序。

protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void aboutus (final View view) {
    setContentView(R.layout.aboutus);
    System.out.println("about us clicked"); 
}

我已经点击了xml。

但是,我需要在“关于我们”页面中编写代码。

在我的关于我们课程中,我有以下内容

public class AboutUs extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aboutus);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public void onBackPressed() {
        setContentView(R.layout.activity_main);
    }
}

以下是单击按钮的xml代码

<ImageButton
    android:id="@+id/ImageButton01"
    android:layout_width="134dp"
    android:layout_height="97dp"
    android:layout_x="16dp"
    android:layout_y="150dp"
    android:onClick="aboutus"
    android:src="@drawable/aboutus" />

我写的任何代码都没有在该页面上运行?我不知道为什么?任何人都可以帮忙吗?

谢谢。

3 个答案:

答案 0 :(得分:1)

像这样更改您的MainActivity

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public void aboutus(final View view)
    {
        startActivity(new Intent(MainActivity.this, AboutUs.class));
    }

AboutUs.java类似:

public class AboutUs extends Activity{
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aboutus);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    /* No need of this method */
    public void onBackPressed() {
          setContentView(R.layout.activity_main);
    }
}

注意:

android:onClick用于 API级别4 以上,因此如果您定位&lt; 1.6 ,那么就不能使用它了。

答案 1 :(得分:0)

我认为您正在使用setContentView()来呼叫另一个Activity。 您必须使用Intents

Intent in = new Intent(this,AboutUs.class);
startActivity(in);

答案 2 :(得分:0)

你不能只在你的aboutus方法中调用setContentView,你需要创建一个启动新活动的意图。调用setContentView只会在当前主活动中设置视图,而不会实例化您的AboutUs活动类。您的aboutus方法应类似于:

public void aboutus (final View view)
{   
    Intent intent = new Intent(this, AboutUs.class);
    startActivity(intent);
}