动态设置TextView?

时间:2014-09-21 06:44:58

标签: android

我正在尝试创建一个程序,但是虽然它可以运行但是当我点击按钮时强制停止会出现错误,这里是代码

public class MainActivity extends Activity {
    protected static final Object[][] tv = null;
    Integer time[] = { 0, 1 };
    String days[] = { "a", "b" };
    TextView tv00, tv10, tv01, tv11;
    Button b1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1 = (Button) findViewById(R.id.button1);
        tv00 = (TextView) findViewById(R.id.textView1);
        tv10 = (TextView) findViewById(R.id.textView2);
        tv01 = (TextView) findViewById(R.id.textView3);
        tv11 = (TextView) findViewById(R.id.textView4);
        b1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                for (int x = 0; x < time.length; x++) {
                    for (int y = 0; y < days.length; y++) {
                        ((TextView) tv[x][y]).setText("ch" + time[x] + days[y]);
                    }
                }
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

这里是logcat

  

09-21 13:06:13.414:D / AndroidRuntime(282):关闭虚拟机

     

09-21 13:06:13.414:W / dalvikvm(282):threadid = 1:线程退出   未捕获的异常(组= 0x4001d800)

     

09-21 13:06:13.434:E / AndroidRuntime(282):致命异常:主

     

09-21 13:06:13.434:E / AndroidRuntime(282):   显示java.lang.NullPointerException

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   com.thesis.testing.MainActivity $ 1.onClick(MainActivity.java:33)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   android.view.View.performClick(View.java:2408)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   android.view.View $ PerformClick.run(View.java:8816)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   android.os.Handler.handleCallback(Handler.java:587)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   android.os.Handler.dispatchMessage(Handler.java:92)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   android.os.Looper.loop(Looper.java:123)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   android.app.ActivityThread.main(ActivityThread.java:4627)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   java.lang.reflect.Method.invokeNative(Native Method)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   java.lang.reflect.Method.invoke(Method.java:521)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

     

09-21 13:06:13.434:E / AndroidRuntime(282):at   dalvik.system.NativeStart.main(原生方法)

     

09-21 13:06:15.944:I / Process(282):发送信号。 PID:282 SIG:9   v22.3.0-887826

如果你想知道布局xml中的什么,它只是4个Textviews和一个按钮,就像这里列出的一样。

另外,我试图进入((TextView tv + time [x] + date [y] .setText .....如果可能的话。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:-1)

你永远不会初始化电视。最简单的事情就是让时间和时间都是静态的。

然后你可以做类似的事情:

static Integer time[] = { 0, 1 };
static String days[] = { "a", "b" };
protected static final Object[][] tv = new Object[time.length][days.length];

然后在使用之前使用TextViews填充tv数组。

tv[0] = tv00;
tv[1] = tv10;
tv[2] = tv01;
tv[3] = tv11;