我遇到了一个问题,就是试图在TextView的内部调用onTap的美元,使应用程序崩溃。但是,将其移动到onCreate()可以工作,因此我无法从onTap()内部设置文本。我如何制作它,以便我可以将文本视图放在onTap中,或者使它能够访问oncreate之外的文本视图?
package com.de_veloper.idlegame;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity{
TextView dollars;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dollars = (TextView)findViewById(R.id.dollars);
}
//
//
//
//code beginning
//
//
//
public int do_llars;
public int upg_click_cost;
public int upg_click_effect;
public int upg_click_level;
String $do_llars = String.valueOf(do_llars);
String $upg_click_cost = String.valueOf(upg_click_cost);
String $upg_click_level = String.valueOf(upg_click_level);
String $upg_click_effect = String.valueOf(upg_click_effect);
public void onTap(View view){
if (upg_click_level == 0){
upg_click_level = 1;
upg_click_effect = 1;
upg_click_effect = upg_click_level * upg_click_effect;
}
do_llars = do_llars + upg_click_effect;
dollars.setText($do_llars);
}
public void upgradeBuy(){
}
}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:text="@string/moneybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16pt"
android:padding="50px"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:clickable="true"
android:onClick="onTap"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/totaldo_llars"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:text="Total do_llars: "
android:textSize="8pt" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/do_llars"
android:id="@+id/dollars"
android:layout_alignTop="@+id/totaldo_llars"
android:layout_toRightOf="@+id/totaldo_llars"
android:layout_toEndOf="@+id/totaldo_llars"
android:textSize="8pt"
android:textIsSelectable="false"
/>
</RelativeLayout>发布于 2015-08-22 06:37:22
问题似乎是在变数中。您正在设置字符串变量$do_llars、$upg_click_cost、$upg_click_level、$upg_click_effect,然后再将任何值赋值给do_llars、upg_click_cost、upg_click_effect、upg_click_level。因此,将您的代码修改为
public int do_llars;
public int upg_click_cost;
public int upg_click_effect;
public int upg_click_level;
String $do_llars = ""; //String.valueOf(do_llars);
String $upg_click_cost = ""; //String.valueOf(upg_click_cost);
String $upg_click_level = ""; //String.valueOf(upg_click_level);
String $upg_click_effect = ""; //String.valueOf(upg_click_effect);
public void onTap(View view){
if (upg_click_level == 0){
upg_click_level = 1;
$upg_click_level = String.valueOf(upg_click_level);
upg_click_effect = 1;
upg_click_effect = upg_click_level * upg_click_effect;
$upg_click_effect = String.valueOf(upg_click_effect);
}
do_llars = do_llars + upg_click_effect;
$do_llars = String.valueOf(do_llars);
dollars.setText($do_llars);
}当您将值赋值给upg_click_cost时,您可以以同样的方式初始化$upg_click_cost。但是,与单独维护int和string变量不同,我建议您在任何地方显示do_llars, upg_click_cost, upg_click_effect, upg_click_level的值,使用String.valueOf(do_llars), String.valueOf(upg_click_cost), String.valueOf(upg_click_effect), String.valueOf(upg_click_level),这样每次更改int变量时都不需要将更新后的值分配给String变量。
发布于 2015-08-22 06:20:27
将dollars.setText($do_llars)改为view..setText($do_llars);
发布于 2015-08-22 06:29:23
本声明如下:
String $do_llars = String.valueOf(do_llars);在为do_llars分配任何值之前执行,这可能会导致空引用异常。
解决方案:在给do_llars赋值后调用上面的语句,或者尝试Syed Zainul Abedin的答案。
https://stackoverflow.com/questions/32152735
复制相似问题