2011-10-14 24 views
1
public class Menu extends Activity { 
    /** Called when the activity is first created. */ 



public void onCreate(Bundle icicle) { 


    //myIntent.setClassName("hello.World", "hello.World.mybuttonclick"); 
    // myIntent.putExtra("com.android.samples.SpecialValue", "Hello, Joe!"); // key/value pair, where key needs current package prefix. 
    //startActivity(myIntent); 

     //Button myButton = (Button) findViewById(R.id.my_button); 
     super.onCreate(icicle); 


     setContentView(R.layout.main); 
    } 

public void updateLayout(){ 

    Intent myIntent = new Intent(Menu.this, mybuttonclick.class); 
    startActivity(myIntent); 

    // TextView sayHello = (TextView) findViewById(R.id.Hello); 

} 

} 

嗨,我是一个新的Android的Java的学生,我们要开发一个简单的Hello World应用程序..我找到了一些困难,让我的onClick()活动工作,使用android:在xml中的Onclick ..我想要做的是改变内容视图做显示一个简单的不同的布局,并说你好..我使用setContentLayout来做到这一点,每次我点击说按钮tho android应用程序崩溃了..我做错了什么?的Android(学生CW)需要方向的

问候,

斯特凡

回答

2

当您设置一个XML格式的点击收听您必须你点击在活动中定义的方法。比方说,你设置的onClick在xml中是“buttonClicked” ,你必须创建一个类似于下面的方法。

public void buttonClicked(View view) 
    { 
      //Your code here 
    } 

需要注意的是该方法是一个公共的void,只有一个类型为View的参数。 XML定义的点击监听器必须像这样工作。上例中的视图对象是被点击的视图。

1

您更新布局功能需要读取

public void updateLayout(View view) 
0

在回答你的问题,有许多的东西,是造成你描述的复杂问题。首先要说的是,如果你为某些事情做出让步,你不必以任何特定的方式做任何事情。 Android是一个非常灵活的平台和Java,因为OOP语言允许您执行许多非OOP语言所不具备的功能。

每当你创建一个“可点击”项目,如Button,如果你想让你的程序响应,你必须有一些东西“听”它。这被称为听众。在你的情况下,你正在寻找一个OnClickListenerOnClickListener确实不是必须是必要的Activity的一部分。它只是一个classimplements View.OnClickListener。然后,你已经告诉Button它的听众的方法是setOnClickListener()。以下示例显示了没有使用XML进行声明的必要条件(但它很重要)。

class Menu extends Activity implements View.OnClickListener 
{ 
    public void onCreate(Bundle icicle) 
    { setContentView(R.layout.main); 
      Button btn = (Button)findViewById(R.id.BUTTON_ID_AS_DEFINED_BY_YOUR_XML); 
      btn.setOnClickListener(this); 
    } 

    public void onClick(View view) 
    { int id = view.getId(); 
      if (id == R.id.BUTTON_ID_AS_DEFINED_BY_YOUR_XML) 
       updateLayout()//Do your Click event here 
    } 

    public void updateLayout() 
    { //updateLayout code... 
    } 
} 

需要注意的是上面的OnClick()。每个OnClickListener必须使用与OnClick()相同的签名。这意味着它必须具有相同的返回和相同的参数,即使它具有不同的名称。对于您正在尝试执行的操作(使用XML),您已将android:OnClick设置为updateLayout。这意味着`UpdateLayout请()如下必须声明:

public void updateLayout(View view) 

现在,得到了更新方法实际工作:虽然你提供你的代码,我们真的不知道你做了什么错误。如果我们有一个包含您收到的错误的Logcat输出的副本,解决问题总是容易得多。有一次,我们可以明确地针对您的错误,并且我可以编辑我的答案以包含您可能需要的内容。

FuzzicalLogic