应用程序正常启动但是当我点击按钮“oneplus”时崩溃

时间:2015-02-17 16:30:30

标签: java android xml android-layout

首先让我告诉你,我是初学者......大约一周前我开始尝试开发应用程序。 当我在真实设备上启动我的应用程序时,它会正常启动但是当我点击按钮时#34; 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);
    }
}

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

3 个答案:

答案 0 :(得分:1)

我怀疑onClick中的两个场景是否有例外

  1. NumberFormat例外
  2. ResourceNotFound Exception
  3. 首先,

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

    第二,

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

    您必须将int转换为String

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

答案 1 :(得分:0)

我建议您在活动的类级别添加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始终是个好主意。

答案 2 :(得分:-1)

你应该使用

number.setText(+newnum);

代替

number.setText(newnum);