当我试图转移到另一个活动时,我的简单“反击应用程序”崩溃了......为什么?

时间:2015-12-12 01:41:28

标签: java android-activity crash

当尝试移动到另一个活动时,应用程序崩溃......

logcat的

java.lang.RuntimeException: Unable to start activity ComponentInfo{myact.julianhernandez.com.counterapp/myact.julianhernandez.com.counterapp.CounterDisplay}: android.content.res.Resources$NotFoundException: String resource ID #0x0
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0
        at android.content.res.Resources.getText(Resources.java:244)
        at android.widget.TextView.setText(TextView.java:3888)
        at myact.julianhernandez.com.counterapp.CounterDisplay.onCreate(CounterDisplay.java:31)
        at android.app.Activity.performCreate(Activity.java:5231)

MainActivity.class代码

    public class MainActivity extends AppCompatActivity {

Button moveActivity;

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

    moveActivity = (Button) findViewById(R.id.list1_button);

    moveActivity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent toCounter = new Intent(MainActivity.this , CounterDisplay.class);
            startActivity(toCounter);
        }
    });

CounterDisplay.class代码

public class CounterDisplay extends AppCompatActivity {

private TextView countView;
private Button addButton;
private Button subtractButton;
//int initialCount = 0;



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

    countView = (TextView) findViewById(R.id.currentCount);
    addButton = (Button) findViewById(R.id.add);
    subtractButton = (Button) findViewById(R.id.subtract);



    countView.setText(0);

    //increment counter by 1
    addButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int currentCount;// = initialCount;
            for(currentCount=0;currentCount>=0;currentCount++){
                countView.setText(currentCount);
            }
        }
    });
  }
}

为什么切换活动时此代码会崩溃?

1 个答案:

答案 0 :(得分:1)

Textview.setText(int)方法采用资源ID,而不是您尝试显示的文本。因为没有资源字符串与您传入的ID匹配(第31行为0),所以会抛出异常。

如果您不想使用资源字符串,setText()方法还有额外的重载,允许您传入char []。查看文档以获取更多信息。 http://developer.android.com/reference/android/widget/TextView.html