onClick 事件不起作用 Android
onClick event don't work Android
我遇到了一个错误,这个错误很常见,因为我在网上看到了几个解决方案,都是一样的。我曾尝试在我的 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 class:
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 上定义,我很迷茫,一切似乎都很好,但事实并非如此,我做错了什么?
感谢您的帮助
从您的按钮 xml 代码中删除 onClick 标记
在 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"
/>
你必须删除这一行
<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" <-----
/>
并在您的 class 中移动 jumpTo 方法的逻辑,因为现在您在 class 和 xml 中有了 onCLick 侦听器。同时更改此行
if(textActivity == "Entree")
有了这个..
if(textActivity.equals("Entree"))
if(textActivity == "Entree")
将上面的代码更改为
if(textActivity.equalsIgnoreCase("Entree"))
同时从您的 xml
中删除以下代码
android:onClick="jumpTo"
注意: 如果您想要不区分大小写的字符串比较,您可以使用 "equalsIgnoreCase",如果您想要区分大小写的字符串比较,那么您可以使用 "equals".
删除
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")
而不是 ==
仅供参考
Now, when you clicks the button, the Android system calls the
activity's jumpTo(View) method. In order for this to work, the method
must be public and accept a View as its only parameter.
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");
}
}
}
我遇到了一个错误,这个错误很常见,因为我在网上看到了几个解决方案,都是一样的。我曾尝试在我的 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 class:
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 上定义,我很迷茫,一切似乎都很好,但事实并非如此,我做错了什么?
感谢您的帮助
从您的按钮 xml 代码中删除 onClick 标记
在 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"
/>
你必须删除这一行
<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" <-----
/>
并在您的 class 中移动 jumpTo 方法的逻辑,因为现在您在 class 和 xml 中有了 onCLick 侦听器。同时更改此行
if(textActivity == "Entree")
有了这个..
if(textActivity.equals("Entree"))
if(textActivity == "Entree")
将上面的代码更改为
if(textActivity.equalsIgnoreCase("Entree"))
同时从您的 xml
中删除以下代码android:onClick="jumpTo"
注意: 如果您想要不区分大小写的字符串比较,您可以使用 "equalsIgnoreCase",如果您想要区分大小写的字符串比较,那么您可以使用 "equals".
删除
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")
而不是 ==
仅供参考
Now, when you clicks the button, the Android system calls the activity's jumpTo(View) method. In order for this to work, the method must be public and accept a View as its only parameter.
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");
}
}
}