1

需要一些帮助来调试我的代码。我对 Android SDK 非常陌生,并且正在努力学习它。从我可以从 SO 和其他谷歌搜索结果的几篇文章中收集到的内容......我制定了这段代码。

public class MainMenu extends Activity {
private int str = 8, dex = 8, inte = 8, luk = 8, stats = 20;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActionBar().setDisplayShowHomeEnabled(false);
    getActionBar().setDisplayShowTitleEnabled(false);
    setContentView(R.layout.activity_main_menu);
}

如您所见,我创建了一些私有变量,我的应用程序将使用它来存储数据。为了与这些值交互,我会在每次修改它们时重新绘制 TextView。*如果这不是一个理想的策略,请随时在这里纠正我。

public void strup(View view) {
    if(stats > 0) {
    TextView tv = (TextView)findViewById(R.id.textView4);
    TextView st = (TextView)findViewById(R.id.textView18);
    str++;
    stats--;
    tv.setText(str);
    st.setText(stats);
    } else {
    Toast.makeText(this, "Out of stats!", Toast.LENGTH_SHORT).show();
    }

我使用具有以下格式的按钮。

    Str [X] [+1] 

其中 Str [X] 是 TextView,其中 X 是动态值。此外,其中 [+1] 是具有由 XML 文件预设的 Onclick 功能的按钮。

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Str [" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="8" />

    <TextView
        android:id="@+id/textView13"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="]" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="strup"
        android:text="+1" />

现在为简单起见,我更改了 "android:text="" " 行以反映它们的实际值,而不是链接到 @string/... 我认为这没有太大区别,但我想承认这一点。

所以我的问题是为什么当我点击“+1”按钮时我的应用程序会崩溃?我的应用程序试图做的就是用更高的值(在 str 下)和更低的值(在 stats 下)重绘 TextView。

感谢您的任何帮助!

4

4 回答 4

4

您在 settext 中传递整数值。将整数转换为字符串,或者您可以尝试像这样更改 settext:

   tv.setText(""+str);
    st.setText(""+stats);
于 2013-08-27T04:37:09.640 回答
0

您尝试创建此对象:

 TextView st = (TextView)findViewById(R.id.textView18);

xml中的textView18在哪里?

于 2013-08-27T04:32:28.713 回答
0

你可以像这样使用 toString 方法进行种姓:

tv.setText(str.toString( ) ); st.setText(stats.toString( ) );

于 2013-09-02T10:42:04.420 回答
0

试试这个改变你的位置 setContentView(R.layout.activity_main_menu);

public class MainMenu extends Activity {
private int str = 8, dex = 8, inte = 8, luk = 8, stats = 20;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_menu);
    getActionBar().setDisplayShowHomeEnabled(false);
    getActionBar().setDisplayShowTitleEnabled(false);

}
于 2013-08-27T04:00:08.170 回答