【问题标题】:onClick event don't work AndroidonClick 事件在 Android 上不起作用
【发布时间】:2016-03-08 21:49:19
【问题描述】:

我有一个错误,很常见,因为我在互联网上看到了几种解决方案,都一样。我曾尝试在我的 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;
        }
    }
}
}

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

感谢您的帮助

【问题讨论】:

  • 由于您已经在实现 View.OnClickListene,因此您不必在按钮 xml 代码中添加 onClick 标记。
  • 我不得不更改 textActivity == "Entree" 并删除 android:onClick="jumpTo" 并且它有效。顺便说一句,您的解决方案也适用于 InteeliJ Amiya,谢谢大家。我会检查关闭主题,谢谢大家!
  • 就我而言,因为我只有一个按钮,所以我会使用你的 IntelliJ Amiya

标签: java android button onclick spinner


【解决方案1】:

删除

     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")而不是==

仅供参考

现在,当您单击按钮时,Android 系统会调用 活动的 jumpTo(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");
            }
}


}

【讨论】:

  • 请给我反馈。
  • @Flo 如你所愿:)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    移除 xml 中的 android:onClick="jumpTo"

    <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"
    />
    

    【讨论】:

      【解决方案4】:
      if(textActivity == "Entree")  
      

      把上面的代码改成

      if(textActivity.equalsIgnoreCase("Entree"))

      同时从你的 xml 中删除以下代码

      android:onClick="jumpTo" 
      

      注意:如果你想对字符串进行不区分大小写的比较,你可以使用“equalsIgnoreCase”,如果你想对字符串进行区分大小写的比较,那么你可以使用“equals”。

      【讨论】:

      • 谢谢你的回答,其实我也在尝试
      • 我希望它可以帮助你:)
      • 确实有效。我不会使用它 atm 因为我更习惯于处理 Amiya 的方式,但它有效,谢谢:)
      • 很高兴听到兄弟的声音,也很高兴帮助你:) 是的,他的演讲很好,我有很多时间来做这件事:)
      【解决方案5】:

      你必须删除这一行

        <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" <-----
      

      />

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

      if(textActivity == "Entree")  
      

      有了这个..

      if(textActivity.equals("Entree"))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多