2011-09-06 11 views
1

我很新的Android,我想用一个按钮和一个回调到一个新的意图(基本上是一个新窗口)编程一些非常简单的应用程序。在Android中的回调按钮不工作

这是代码:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    //Onclick "Start Game" button 
    start = (Button) findViewById(R.id.startGame); 
    tv = (TextView) findViewById(R.id.textView1); 
    start.setOnClickListener(new Button.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      tv.setText("clicked"); 
      Intent i = new Intent(MainActivity.this, Level1Activity.class); 
      startActivity(i); 
     } 
    }); 
[...] 

正如你可以看到我有一个按钮(startGame)和一个TextView(textView1)。我的问题很简单,当我点击startGame按钮时,什么都没有发生(TextView没有改变为“单击”,也没有改变屏幕)。该按钮以及TextView设置正确,因为Eclipse不会抱怨,但仍然无法正常工作。

这里是视图的XML片段:

<Button android:id="@+id/startGame" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start Game"></Button> 
<TextView android:text="change" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 

我相信我的问题是非常愚蠢的,我只是无法看到它。

感谢

编辑:

我发现这个问题是相关的事实,我在查看多个按钮,这样一个以上的回调(上当然是不同的按钮)。只要我评论其他回调,startGame按钮开始按预期工作。

回答

1

你必须在你的清单文件中添加一个标签,那么它会正常工作。而标签 - >

  1. 活动机器人:名字=“Level1Activity”

记住你的清单文件的应用程序标签中添加此标记,休息,你的代码是好的。试试它肯定会工作。

+0

谢谢!不知道为什么,但这解决了它!我认为这与活动启动无关,但与输入未被采用(TextView未改变)无关。尽管如此,Android黑魔法。谢谢! – Masiar

+0

雅试试吧,它肯定会去工作。如果我的答案奏效,那么它就会升级。 – Rocker

+0

其实在android中有一个活动堆栈的概念。每当你激发从一个活动到另一个活动的意图时,它就被添加到活动堆栈中,并且如果你的应用程序没有包含你想要去做的活动,那么意图如何激发,这就是为什么我们必须在应用程序下添加活动名称应用程序清单文件的标签。 – Rocker

0

试试这个,告诉会发生什么。

start.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      tv.setText("clicked"); 
      Intent i = new Intent(MainActivity.this, Level1Activity.class); 
      startActivity(i); 
     } 
    }); 
+0

Eclipse抱怨'.setOnClickListener'和'OnClickListener()'。作为建议它说创建一个OnClickListener类。 – Masiar

+0

而不是在该选项中创建选择“导入OnClickListener()”。 –

+0

单击onClickListener()并按下F2键,然后您可以看到一个对话框,其中'OnClickListener无法解析为类型',从该选择导入'OnClickListener()' –

0

你确定你的Manifest是正确的吗? 否则这是肯定的工作...

start.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent i = new Intent(view.getContext(), Level1Activity.class); 
       startActivityForResult(i, 0); 
      } 
     });