【问题标题】:App starts normally But crashes when I click Button "oneplus"应用程序正常启动但是当我单击按钮“oneplus”时崩溃
【发布时间】:2015-04-18 10:16:16
【问题描述】:

首先让我告诉你,我是这方面的初学者......大约一周前我开始尝试开发应用程序。 当我在真实设备上启动我的应用程序时,它可以正常启动但是当我单击“oneplus”按钮时,它说应用程序没有响应...... 这个应用程序在 TextView 中的数字上加了一个数字。之前我遇到同样的问题并认为是因为碎片。所以我删除了它们并制作了一个非常简单的应用程序但问题仍然存在

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"
    android:layout_height="match_parent"     android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"  tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:text="0"
        android:id="@+id/num"
        android:textSize="70sp"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="80dp" 
        android:layout_marginTop="100dp"
        android:text=" + 1 "
        android:textSize="50sp"
        android:id="@+id/plusone"
        android:onClick="onClick"
        />

</RelativeLayout>`

mainactivity.java

package com.example.tjain.oneup;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity implements     View.OnClickListener {

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


    }


    @Override
    public void onClick(View v) {
        final TextView number = (TextView) findViewById(R.id.num);
        int original = Integer.parseInt(number.getText().toString());
        int newnum = original + 1;
        number.setText(newnum);
    }
}

我在其他应用程序中也遇到此错误。也许我在重复我的错误。请指出。提前致谢

【问题讨论】:

  • 添加您的 LogCat 堆栈跟踪。虽然我怀疑它可能是NumberFormatException

标签: java android xml android-layout


【解决方案1】:

我怀疑您的 onClick 中的两种情况是否存在异常

  1. 数字格式异常
  2. ResourceNotFound 异常

首先,

try
{
 int original = Integer.parseInt(number.getText().toString());
}catch(Exception ex)
{
 ex.printStacktrace();
}

第二个,

因为 int 不是 TextView 的 setText 的参数(仅当它不是字符串资源 id 的一部分时),因为它会发现资源 id 不接受作为字符串值。和明显的资源未找到异常

您必须将int 转换为String

 number.setText(String.valueOf(newnum));

【讨论】:

  • 这是支持您的案例的评论 :)
【解决方案2】:

我建议您在 Activity 的类级别添加 UI 元素,这样您就有一个 TextView 对象和一个 Button 对象,这样您只需搜索一次资源,您就可以添加一个点击监听器按钮本身是这样的:

public class MainActivity extends Activity{
    private TextView mNumberTextView;
    private Button mOnePlusButton;

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

        mNumberTextView = findViewbyId(R.id.num);
        mOnePlusButton = findViewbyId(R.id.plusone);

        mOnePlusButton.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                int original = Integer.parseInt(mNumberTextView.getText().toString());
                mNumberTextView.setText(original + 1);
            }
        });
    }
}

编辑:由于您还是新手,因此最好查看documentation

【讨论】:

    【解决方案3】:

    你应该使用

    number.setText(+newnum);
    

    改为

    number.setText(newnum);
    

    【讨论】:

    • 无效。因为要使用重载运算符附加字符串,您必须定义像 ""+newnum 这样的字符串。
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多