onClick事件不适用于Android

时间:2016-03-08 13:26:06

标签: java android button onclick spinner

我有一个错误,很常见,因为我已经看到了几个解决方案,在互联网上都是一样的。我试图在我的Android代码上执行此操作,但它不起作用。

我有一个按钮。这个按钮取决于微调器上的文本,应该让我去一个页面或另一个页面。

这是按钮的xml代码:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/lancer"
    android:id="@+id/startButton"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:clickable="true"
    android:onClick="jumpTo"/>

及其java类:

public class Admin extends AppCompatActivity implements View.OnClickListener {

Spinner spinner_event;
Spinner spinner_activity;
Spinner spinner_wallpaper;
ArrayAdapter<CharSequence> adapter_wallpaper;
ArrayAdapter<CharSequence> adapter_event;
ArrayAdapter<CharSequence> adapter_activity;
Button startButton;
String textActivity;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.content_admin);


    spinner_event = (Spinner)findViewById(R.id.spinner_event);
    adapter_event = ArrayAdapter.createFromResource(this, R.array.events,android.R.layout.simple_spinner_dropdown_item);
    spinner_event.setAdapter(adapter_event);


    spinner_activity = (Spinner)findViewById(R.id.spinner_activity);
    adapter_activity = ArrayAdapter.createFromResource(this, R.array.activity,android.R.layout.simple_spinner_dropdown_item);
    spinner_activity.setAdapter(adapter_activity);


    spinner_wallpaper = (Spinner)findViewById(R.id.spinner_wallpaper);
    adapter_wallpaper = ArrayAdapter.createFromResource(this, R.array.wallpapers,android.R.layout.simple_spinner_dropdown_item);
    spinner_wallpaper.setAdapter(adapter_wallpaper);

    startButton = (Button)findViewById(R.id.startButton);
    startButton.setOnClickListener(this);
    }

@Override
public void onClick(View v) {
    textActivity = spinner_activity.getSelectedItem().toString();
    switch(v.getId()){

        case R.id.startButton:
        {
            if(textActivity == "Entree"){
                Intent i = new Intent(this, BadgeEntree.class);
                startActivity(i);
            }
            break;
        }
    }
}
}

我应该去我的BadgeEntree。它们都是在AndroidManifest.xml上定义的,我很遗憾一切似乎还可以,但事实并非如此,我做错了什么?

感谢您的帮助

5 个答案:

答案 0 :(得分:2)

删除

     startButton.setOnClickListener(this);
    }

@Override
public void onClick(View v) {
    textActivity = spinner_activity.getSelectedItem().toString();
    switch(v.getId()){

        case R.id.startButton:
        {
            if(textActivity == "Entree"){
                Intent i = new Intent(this, BadgeEntree.class);
                startActivity(i);
            }
            break;
        }
    }

<强>不要

首先,您应该拨打if(textActivity.equals("Entree")而不是==

FYI

  

现在,当您单击该按钮时,Android系统将调用该按钮   activity的jumpTo(View)方法。为了使这个工作,方法   必须是公开的并接受View作为其唯一参数。

public void jumpTo(View i)
{
textActivity = spinner_activity.getSelectedItem().toString();
if(textActivity.equals("Entree"){
                Intent i = new Intent(this, BadgeEntree.class);
                startActivity(i);
            }
            else
            {
            Log.d("Else","Wrong");
            }
}

<强>最后

public class Admin extends AppCompatActivity  {

Spinner spinner_event;
Spinner spinner_activity;
Spinner spinner_wallpaper;
ArrayAdapter<CharSequence> adapter_wallpaper;
ArrayAdapter<CharSequence> adapter_event;
ArrayAdapter<CharSequence> adapter_activity;
Button startButton;
String textActivity;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.content_admin);


    spinner_event = (Spinner)findViewById(R.id.spinner_event);
    adapter_event = ArrayAdapter.createFromResource(this, R.array.events,android.R.layout.simple_spinner_dropdown_item);
    spinner_event.setAdapter(adapter_event);


    spinner_activity = (Spinner)findViewById(R.id.spinner_activity);
    adapter_activity = ArrayAdapter.createFromResource(this, R.array.activity,android.R.layout.simple_spinner_dropdown_item);
    spinner_activity.setAdapter(adapter_activity);


    spinner_wallpaper = (Spinner)findViewById(R.id.spinner_wallpaper);
    adapter_wallpaper = ArrayAdapter.createFromResource(this, R.array.wallpapers,android.R.layout.simple_spinner_dropdown_item);
    spinner_wallpaper.setAdapter(adapter_wallpaper);

    startButton = (Button)findViewById(R.id.startButton);

    }


public void jumpTo(View i)
{
textActivity = spinner_activity.getSelectedItem().toString();
if(textActivity.equals("Entree"){
                Intent i = new Intent(this, BadgeEntree.class);
                startActivity(i);
            }
            else
            {
            Log.d("Else","Wrong");
            }
}


}

答案 1 :(得分:1)

从按钮xml代码中删除 onClick标记

答案 2 :(得分:1)

删除android:onClick =&#34; jumpTo&#34;在xml中

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lancer"
android:id="@+id/startButton"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:clickable="true"
/>

答案 3 :(得分:1)

您必须删除此行

  <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/lancer"
    android:id="@+id/startButton"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:clickable="true"
    android:onClick="jumpTo" <-----

/&GT;

并在您的类中移动jumpTo方法的逻辑,因为现在您在类和xml中都有onCLick侦听器。也改变这一行

if(textActivity == "Entree")  

用这个..

if(textActivity.equals("Entree"))

答案 4 :(得分:1)

if(textActivity == "Entree")  

将上述代码更改为

if(textActivity.equalsIgnoreCase("Entree"))

还从ur xml中删除以下代码

android:onClick="jumpTo" 

注意:您可以使用&#34; equalsIgnoreCase&#34;如果你想要字符串的Case Insensitive比较,如果你想要字符串的Case Sensitive比较,那么你可以使用&#34; equals&#34;。