Похоже, ваша проблема в состоянии состязания между основным потоком и асинхронной задачей, проблема в слушателе onClick:
click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Connection con = new Connection(maincontext);
con.execute();
if (!con.flag){
goTo2ndActivity();
}
}
});
, поэтому эту часть
if (!con.flag){
goTo2ndActivity();
}
необходимо вызвать начиная с поста, выполните асинхронное задание c, для этого передайте действие конструктору асинхронного задания c следующим образом:
обновите конструктор задания asyn c:
public class Connection extends AsyncTask<Void, Void, String> {
Context mContext;
MainActivity activity;
public Connection(Context context,MainActivity activity){
this.mContext = context;
this.activity= activity
}
..........
..........
и после публикации выполните:
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (flag) {
Toast toast = Toast.makeText(mContext,
"Error!", Toast.LENGTH_LONG);
toast.show();
}else{
//go to next activity
activity.goTo2ndActivity();
}
}
теперь ваш щелчок кнопки становится:
click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//just execute
final Connection con = new Connection(maincontext,this);
con.execute();
}
});