Привет, я запускаю свое первое приложение для Android и пытаюсь заставить TextView изменить слова через некоторое время.
public class Game1Activity extends Activity {
GameViews ngv;
private static String gameId = "game1Activity-game";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.game1_layout);
ngv = (GameViews)findViewById(R.id.Game1);
ngv.setTextView((TextView)findViewById(R.id.Text));
};
}
public class GameViews extends View
{
private TextView gameText;
private long time1 = System.currentTimeMillis();
public GameViews(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
initGameViews();
}
public GameViews(Context context, AttributeSet attrs)
{
super(context, attrs);
initGameViews();
}
public void setTextView(TextView tv)
{
gameText = tv;
}
public void initGameViews()
{
setFocusable(true);
Resources r = this.getContext().getResources();
changeGameText();
}
public void changeGameText()
{
while (true)
{
if (System.currentTimeMillis() - time1 > 100)
{
gameText.setText(R.string.hi2);
return;
}
}
}
}
XML-файл макета:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<game1.code.GameViews
android:id="@+id/Game1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
tileSize="24" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:gravity="center" >
<TextView
android:id="@+id/Text"
android:text="@string/hi1"
android:visibility="visible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:textColor="#ff8888ff"
android:textSize="24sp"/>
</RelativeLayout>
</FrameLayout>
иstrings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hi1">hi1</string>
<string name="hi2">hi2</string>
</resources>
Когда я пытаюсь запустить, logCat сообщает мне, что:
03-08 03:19:28.067: E/AndroidRuntime(602): Caused by: java.lang.NullPointerException
03-08 03:19:28.067: E/AndroidRuntime(602): game1.code.GameViews.changeGameText(GameViews.java:67)
03-08 03:19:28.067: E/AndroidRuntime(602):
game1.code.GameViews.initGameViews(GameViews.java:52)
Кажется, что setText вызывает проблему, как когда я комментировалв этой строке проблем не возникает.
Я что-то пропустил?