我怎样才能延缓TextView的输出? [英] How can I delay the textview output?
本文介绍了我怎样才能延缓TextView的输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我用下面的code连接到WIFI网络。有没有一种方法,我可以推迟的TextView文本的输出,以便它不显示,直到它被连接到无线网络?该消息来了它实际上是连接前。
进口的java.util.List;
进口android.app.Activity;
进口android.os.Bundle;
进口android.content.Context;
进口android.net.ConnectivityManager;
进口android.net.NetworkInfo;
进口android.net.wifi.WifiConfiguration;
进口android.net.wifi.WifiManager;
进口android.util.Log;
进口android.view.View;
进口android.view.View.OnClickListener;进口android.widget.Button;
进口android.widget.TextView;公共类测试活动扩展了活动{
/ **当第一次创建活动调用。
* @返回* /@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
按钮OffWifi =(按钮)findViewById(R.id.offwifi);
OffWifi.setOnClickListener(新OnClickListener(){
公共无效的onClick(视图v){ WifiManager wifiManager =(WifiManager)getBaseContext()getSystemService(Context.WIFI_SERVICE)。
wifiManager.setWifiEnabled(假);
}
});
TextView的电视=(的TextView)findViewById(R.id.tv); WifiManager无线=(WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiConfiguration WC =新WifiConfiguration();
wc.SSID =\\测试\\; // IMP!这应该是行情! wc.hiddenSSID = TRUE;
wc.status = WifiConfiguration.Status.ENABLED;
wc.priority = 10;
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
WC preSharedKey =\\密码\\。
WifiManager wifiManag =(WifiManager)this.getSystemService(WIFI_SERVICE);
布尔RES1 = wifiManag.setWifiEnabled(真);
INT解析度= wifi.addNetwork(检查previousConfiguration(WC));
Log.d(无线preference,添加网络返回+ RES);
布尔ES = wifi.saveConfiguration();
Log.d(无线preference,saveConfiguration返回+ ES);
布尔B = wifi.enableNetwork(RES,真);
Log.d(无线preference,enableNetwork返回+ B); ConnectivityManager CONNEC =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 如果(CONNEC =空&放大器;!及(connec.getNetworkInfo(1).getState()== NetworkInfo.State.CONNECTED)||(connec.getNetworkInfo(0).getState()== NetworkInfo.State.CONNECTED) ){ tv.setText(你现在已经连接!+1.1版);
}否则如果(connec.getNetworkInfo(0).getState()== NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState()== NetworkInfo.State.DISCONNECTED){ tv.setText(以下简称连接是一个错误,请重试);
} }
公共WifiConfiguration检查previousConfiguration(WifiConfiguration WC){
WifiManager无线=(WifiManager)getSystemService(Context.WIFI_SERVICE);
清单< WifiConfiguration> CONFIGS = wifi.getConfiguredNetworks();
对于(WifiConfiguration配置:CONFIGS){
如果(config.SSID.equals(wc.SSID))返回配置;
}
返回厕所;
}}
解决方案
使用的AsyncTask
,并把连接在 doInBackground
,的setText
放进 onPostExecute
公共类连接扩展的AsyncTask<弦乐,太虚,布尔> {私人活动活动;
私人上下文的背景下;公共LoadContacts(活动活动){
this.activity =活动;
上下文=活动;
}@覆盖
在preExecute保护无效(){
// TODO自动生成方法存根
super.on preExecute();}@覆盖
保护无效onPostExecute(布尔结果){
TextView的电视=(TextView中)activity.findViewById(R.id.tv);
如果(CONNEC =空&放大器;!及(connec.getNetworkInfo(1).getState()== NetworkInfo.State.CONNECTED)||(connec.getNetworkInfo(0).getState()== NetworkInfo.State.CONNECTED) ){ tv.setText(你现在已经连接!+1.1版);
}否则如果(connec.getNetworkInfo(0).getState()== NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState()== NetworkInfo.State.DISCONNECTED){ tv.setText(以下简称连接是一个错误,请重试);
}
super.onPostExecute();
}@覆盖
保护布尔doInBackground(字符串... PARAMS){
WifiManager无线=(WifiManager)activity.getSystemService(Context.WIFI_SERVICE);
WifiConfiguration WC =新WifiConfiguration();
wc.SSID =\\测试\\; // IMP!这应该是行情!wc.hiddenSSID = TRUE;
wc.status = WifiConfiguration.Status.ENABLED;
wc.priority = 10;
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
WC preSharedKey =\\密码\\。
WifiManager wifiManag =(WifiManager)context.getSystemService(WIFI_SERVICE);
布尔RES1 = wifiManag.setWifiEnabled(真);
INT解析度= wifi.addNetwork(检查previousConfiguration(WC));
Log.d(无线preference,添加网络返回+ RES);
布尔ES = wifi.saveConfiguration();
Log.d(无线preference,saveConfiguration返回+ ES);
布尔B = wifi.enableNetwork(RES,真);
Log.d(无线preference,enableNetwork返回+ B); ConnectivityManager CONNEC =(ConnectivityManager)activity.getSystemService(Context.CONNECTIVITY_SERVICE); 返回true;
}}
测试活动应该是这样的:
公共类测试活动扩展了活动{
/ **当第一次创建活动调用。
* @返回* /@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);新的连接(本).execute();
}
code未经测试并可能有一些错误,但我希望你明白了吧...
I am using the code below to connect to a wifi network. Is there a way I can delay the output of textview text so that it doesnt display until it is connected to wifi? The message is coming up before it is actually connected.
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class TestActivity extends Activity {
/** Called when the activity is first created.
* @return */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button OffWifi = (Button)findViewById(R.id.offwifi);
OffWifi.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
WifiManager wifiManager = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
}
});
TextView tv= (TextView) findViewById(R.id.tv);
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"Test\""; //IMP! This should be in Quotes!!
wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.ENABLED;
wc.priority = 10;
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.preSharedKey = "\"Password\"";
WifiManager wifiManag = (WifiManager) this.getSystemService(WIFI_SERVICE);
boolean res1 = wifiManag.setWifiEnabled(true);
int res = wifi.addNetwork(checkPreviousConfiguration(wc));
Log.d("WifiPreference", "add Network returned " + res );
boolean es = wifi.saveConfiguration();
Log.d("WifiPreference", "saveConfiguration returned " + es );
boolean b = wifi.enableNetwork(res, true);
Log.d("WifiPreference", "enableNetwork returned " + b );
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if (connec != null && (connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)){
tv.setText("You are now connected! " + "Version 1.1");
}else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {
tv.setText("The was an error connecting, please try again.");
}
}
public WifiConfiguration checkPreviousConfiguration(WifiConfiguration wc) {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> configs = wifi.getConfiguredNetworks();
for(WifiConfiguration config : configs) {
if(config.SSID.equals(wc.SSID)) return config;
}
return wc;
}
}
解决方案
Use AsyncTask
and put connecting in the doInBackground
, setText
put into the onPostExecute
public class Connect extends AsyncTask<String, Void, Boolean> {
private Activity activity;
private Context context;
public LoadContacts(Activity activity){
this.activity=activity;
context = activity;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected void onPostExecute(Boolean result) {
TextView tv= (TextView) activity.findViewById(R.id.tv);
if (connec != null && (connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)){
tv.setText("You are now connected! " + "Version 1.1");
}else if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {
tv.setText("The was an error connecting, please try again.");
}
super.onPostExecute();
}
@Override
protected Boolean doInBackground(String... params) {
WifiManager wifi = (WifiManager) activity.getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"Test\""; //IMP! This should be in Quotes!!
wc.hiddenSSID = true;
wc.status = WifiConfiguration.Status.ENABLED;
wc.priority = 10;
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.preSharedKey = "\"Password\"";
WifiManager wifiManag = (WifiManager) context.getSystemService(WIFI_SERVICE);
boolean res1 = wifiManag.setWifiEnabled(true);
int res = wifi.addNetwork(checkPreviousConfiguration(wc));
Log.d("WifiPreference", "add Network returned " + res );
boolean es = wifi.saveConfiguration();
Log.d("WifiPreference", "saveConfiguration returned " + es );
boolean b = wifi.enableNetwork(res, true);
Log.d("WifiPreference", "enableNetwork returned " + b );
ConnectivityManager connec = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
return true;
}
}
TestActivity should look like this:
public class TestActivity extends Activity {
/** Called when the activity is first created.
* @return */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Connect(this).execute();
}
Code was not tested and might have some errors, but I hope you get the point...
这篇关于我怎样才能延缓TextView的输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文