Button 代码会在Android emulator中抛出错误,但不会在Eclipse中抛出错误。text单击按钮时查看更改

Button 代码会在Android emulator中抛出错误,但不会在Eclipse中抛出错误。text单击按钮时查看更改,button,android-emulator,textview,runtime-error,imagebutton,Button,Android Emulator,Textview,Runtime Error,Imagebutton,我是一名新的Android应用程序开发人员,我想要一个通过单击按钮来更改textview小部件的应用程序。Eclipse不会抛出错误,但Android仿真器会抛出错误 这是我的密码: import android.os.Bundle; import android.app.Activity; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton;

我是一名新的Android应用程序开发人员,我想要一个通过单击按钮来更改textview小部件的应用程序。Eclipse不会抛出错误,但Android仿真器会抛出错误

这是我的密码:

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends Activity {

int stringIdList[] = { R.string.text1, R.string.text2, R.string.text3,
        R.string.text4 };
int stringListCounter = 0;
TextView text122;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageButton next = (ImageButton) findViewById(R.id.Next);
    ImageButton previous = (ImageButton) findViewById(R.id.Previous);
    text122 = (TextView) findViewById(R.id.Text00);
    next.setOnClickListener((OnClickListener) this);
    previous.setOnClickListener((OnClickListener) this);
}

public void onClick(View v) {
    int id = v.getId();

    if (id == R.id.Next && stringListCounter < stringIdList.length - 1) {
        stringListCounter++;
    } else if (id == R.id.Previous && stringListCounter > 0) {
        stringListCounter--;
    }

    text122.setText(stringIdList[stringListCounter]);
}
错误就在这里

    next.setOnClickListener((OnClickListener) this);
    previous.setOnClickListener((OnClickListener) this);
我不知道你为什么要这样设置你的onClick听众,因为我也不是那么熟练

我是这样学的

package com.example.test;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends Activity {

    int stringIdList[] = { 111, 222, 333, 444};
    int stringListCounter = 0;
    TextView text122;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setWidgets();
        setOnClickListeners();
    }

    private void setWidgets(){
        text122 = (TextView) findViewById(R.id.Text00);
    }

    private void setOnClickListeners(){
        text122.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                if(stringListCounter == 4){
                    stringListCounter =0;
                    text122.setText(" " + stringIdList[stringListCounter]);
                    stringListCounter ++;
                    setOnClickListeners();

                }
                else
                {
                    text122.setText(" " + stringIdList[stringListCounter]);
                    stringListCounter++;
                    setOnClickListeners();
                }


            }
        });
    }
}
很明显我没有做你想做的事。当您按下文本视图时,文本将发生变化,它将重置onClickListener以准备下一次按下。逻辑很糟糕,但您知道如何设置onClick侦听器


另外,我不知道为什么您的stringIdList是Int。它不是一个字符串列表吗?设置文本视图的文本时肯定会出现问题,因为您正在发送int。

请编辑以包含错误消息。我从logcat添加了一些内容,我不知道这是否足够??它何时崩溃?启动时?感谢fukkireta,您的代码正在运行,对不起,我是初学者,我希望应用程序单击按钮(下一步,上一步)和textview更改,并且不包含我想要文本的整数…我自己也刚刚进入安卓系统,但老实说,我的onclick甚至与这里介绍的任何方法都不同。在XML文件中,可以为按钮设置的属性之一是onClick。因此,对于XML中的按钮,您可以添加:
android:onClick=“nameForYourOnClick”
在代码中需要做的就是编写这样一个方法:
public void nameForYourOnClick(View v){//do stuff}
    next.setOnClickListener((OnClickListener) this);
    previous.setOnClickListener((OnClickListener) this);
package com.example.test;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends Activity {

    int stringIdList[] = { 111, 222, 333, 444};
    int stringListCounter = 0;
    TextView text122;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setWidgets();
        setOnClickListeners();
    }

    private void setWidgets(){
        text122 = (TextView) findViewById(R.id.Text00);
    }

    private void setOnClickListeners(){
        text122.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                if(stringListCounter == 4){
                    stringListCounter =0;
                    text122.setText(" " + stringIdList[stringListCounter]);
                    stringListCounter ++;
                    setOnClickListeners();

                }
                else
                {
                    text122.setText(" " + stringIdList[stringListCounter]);
                    stringListCounter++;
                    setOnClickListeners();
                }


            }
        });
    }
}