从Android中的按钮打开屏幕

从Android中的按钮打开屏幕,android,Android,我对Java和android应用非常陌生。 当用户点击一个按钮时,我试图打开一个屏幕。该按钮称为“公司” 我有一个MainActivity.java和一个Company.java MainActivity看起来像: public class MainActivity extends Activity { public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; @Override protected

我对Java和android应用非常陌生。 当用户点击一个按钮时,我试图打开一个屏幕。该按钮称为“公司”

我有一个MainActivity.java和一个Company.java

MainActivity看起来像:

public class MainActivity extends Activity {
 public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     //getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // If your minSdkVersion is 11 or higher, instead use:
    // getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
     // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}
/** Called when the user clicks the Company button */
public void onClick(View view) {
    // Do something in response to button
    Intent intent = new Intent(this, TheCompany.class);
    startActivity(intent);
}
}
但是当用户点击按钮时,什么也不会发生。 我有一个公司Java文件和一个公司XML文件,但它们没有被调用。我怀疑这就是从这里给他们打电话的方式

非常感谢你的帮助。如果需要发布其他代码,请告诉我,如activity_main.xml。 谢谢

永远不会调用onclick()方法! 您忘记了在布局xml文件中设置
android:onClick
,或者在代码中以编程方式设置
OnClickListener
(见下文):


您似乎说您拥有Company.java,但出于您的意图,您试图访问Company.class。文件名需要与Company.java中的公共类匹配。因此,您需要一个Company.java文件和Company类,或者Company.java文件和Company类

我怀疑这是正确的设置,否则,如果您在XML文件中添加了
android:onClick
,就会出现错误


为按钮发布XML是值得的,sockeqwe很可能是对的。

如果你想用他自己的
java.class
通过
按钮打开一个新的
活动
,只需替换这个:

public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);   

Button btn = (Button)findViewById(R.id.Company);
btn.setOnClickListner(new View.OnClickListner(){

@Override
public void onClick(View v){
Intent activityChangeIntent = new Intent(MainActivity.this,TheCompany.class)
MainActivity.this.starActivity(activityChangeIntent);
    }
  });
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}

您的按钮是否设置了
android:onClick
属性?可能没有,我将在何处以及如何设置?在活动的xml布局文件中,对于代码所指的按钮,我很抱歉,是的,我确实有一个TheCompany.java抱歉,由于没有声誉,我无法评论其他人的答案。关于您对Pier答案的回复:
btn.setOnClickListner(new View.OnClickListner()
-此行中的两个侦听器单词都缺少第一个e,只是输入错误。
(按钮)findViewById(R.id.TheCompany)上的第二个错误
是因为XML文件中按钮的id不是公司。请确保您的按钮在XML中有一行写有
android:id=“@+id/someButtonId”
,并将代码中的行修改为
(button)findViewById(R.id.someButtonId)
。非常感谢Sorin。我现在遇到以下错误:类型视图中的方法setOnClickListener(View.OnClickListener)不适用于参数(new DialogInterface.OnClickListener(){})Sorin,整理了错误消息,我没有导入:import android.view.view.OnClickListener;当我单击公司按钮时,它现在崩溃了……不幸的是,如果不查看LogCat中的日志,很难判断错误到底是什么。直觉让我认为意图找不到您试图启动的活动我想象你在OnClickListener中有一行
Intent-Intent=new-Intent(这个,company.class);
。试着用
main活动替换
this
。这个
看起来像:
Intent-Intent=new-Intent(main-activity.this,company.class)
并查看它是否有效。否则,我需要一些日志来查看它可能是什么。我已在以下行中复制了您的代码和错误:btn.setOnClickListner(new View.OnClickListner(),错误消息为:View.OnClickListner无法解析为类型。行中也有错误:Button btn=(Button)findViewById(R.id.TheCompany)说公司无法解决或者不是一个字段。你能发布你的
文件.xml
吗?让我看看我能解决你的问题。皮尔,我解决了这个问题。现在一切正常!非常感谢
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);   

Button btn = (Button)findViewById(R.id.Company);
btn.setOnClickListner(new View.OnClickListner(){

@Override
public void onClick(View v){
Intent activityChangeIntent = new Intent(MainActivity.this,TheCompany.class)
MainActivity.this.starActivity(activityChangeIntent);
    }
  });
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
 // Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}