在Android应用程序中不满足条件时无法禁用按钮

时间:2015-07-03 10:40:34

标签: android

我设计了一个应用程序,可以从服务器接收特定年份和特定人员的数据 在应用程序中,我使用了2个按钮来增加和减少年份的值。数据可在特定时间段内使用,并且该时间因人而异。

因此,当有人递增年份并且该年份的数据不可用时,服务器将返回0. 收到0后应用应禁用 增量按钮并显示上一年的数据。

以下是该应用的代码。我使用套接字编程与服务器通信。 有2个java文件。一个是显示数据的活动,另一个是asynctask,用于从服务器提取数据。

public class MainActivity2 extends ActionBarActivity {
TextView[] t = new TextView[5];
TextView t1;
String empno;
int year;
ImageButton i1, i2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main_activity2);
    t[0] = (TextView) findViewById(R.id.textView6);
    t[1] = (TextView) findViewById(R.id.textView7);
    t[2] = (TextView) findViewById(R.id.textView8);
    t[3] = (TextView) findViewById(R.id.textView9);
    t[4] = (TextView) findViewById(R.id.textView10);
    t1 = (TextView) findViewById(R.id.textView11);

    i1 = (ImageButton) findViewById(R.id.imageButton);
    i2 = (ImageButton) findViewById(R.id.imageButton2);
    Intent i = getIntent();
    empno = i.getStringExtra("emp_no");
    getValues();
    i1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            year = year + 1;
            getValues();
        }
    });
    i2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            year = year - 1;
            getValues();
        }
    });
}

private void getValues() {
    t1.setText(String.valueOf(year));
    Connect c = new Connect(this, empno, year, t);
    c.execute();
}
}

第二个java类是Connect,它实现了套接字编程。

public class Connect extends AsyncTask < Void, Void, Void > {
TextView[] t;
String a, r, en, y;
Context c;
TextView t1;
int year;
public Connect(Context c, String en, int year, TextView[] t) {
    this.c = c;
    this.en = en;
    this.year = year;
    this.t = t;
}
@Override
protected Void doInBackground(Void...arg0) {
    a = en + ":" + String.valueOf(year);
    try {
        Socket client = new Socket("10.1.13.74", 7777);
        OutputStream outToServer = client.getOutputStream();
        DataOutputStream out = new DataOutputStream(outToServer);
        out.writeUTF(a);
        InputStream inFromServer = client.getInputStream();
        DataInputStream in = new DataInputStream(inFromServer);
        r = in .readUTF();
        client.close();
    } catch (IOException e) {
        r = "0";
    }
    return null;
}
@Override
protected void onPostExecute(Void result) {
    if (r.equals("0")) {
        for (int i = 0; i < 5; i++) {
            t[i].setText("");
        }
    } else {
        String[] buffer = null;
        buffer = r.split(":");

        for (int i = 0; i < 5; i++) {
            t[i].setText(buffer[i + 1]);
        }
    }
}
}

0 个答案:

没有答案