android 组件不可见,Android setVisibility(View.VISIBLE)不显示该组件

我正在使用setVisibility()隐藏onStart()中的一些UI组件,目的是在onActivityResult()的特定条件下使它们重新出现。

我已将变量设置为全局变量,并将其分配给组件onCreate()。

使组件不可见的代码正常工作,例如auth_btn.setVisibility(View.INVISIBLE);

但是,在onActivityResult()处,auth_btn.setVisibility(View.VISIBLE);不会使按钮重新出现。

代码(来自评论中的pastebin):

private Button auth_btn = null;

private Button newAcc_btn = null;

private EditText mEdit = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// Set up the window layout

setContentView(R.layout.main);

//instance of database adapter

db = new DBAdapter(this);

// Get local Bluetooth adapter

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

// If the adapter is null, then Bluetooth is not supported

if (mBluetoothAdapter == null) {

Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();

finish();

return;

}

auth_btn = (Button) findViewById(R.id.btn_auth);

mEdit = (EditText)findViewById(R.id.text_username);

newAcc_btn = (Button) findViewById(R.id.btn_newAcc);

//read every entry from database

db.load();

}

@Override

public void onStart() {

super.onStart();

// If BT is not on, request that it be enabled.

if (!mBluetoothAdapter.isEnabled()) {

Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(enableIntent, REQUEST_ENABLE_BT);

// Otherwise, setup the session

} else {

setupSession();

}

}

private void setupSession () {

//Authenticate

auth_btn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

try {

out.write(AUTHENTICATE);

out.flush();

} catch (IOException e) {

e.printStackTrace();

}

authenticate();

}

});

//Create new account

newAcc_btn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

try{

out.write(NEWACCOUNT);

out.flush();

} catch (IOException e) {

e.printStackTrace();

}

newAccount();

}

});

//Scan QR Code

Button scan = (Button) findViewById(R.id.btn_scan);

scan.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent("com.google.zxing.client.android.SCAN");

intent.putExtra("SCAN_MODE", "QR_CODE_MODE");

startActivityForResult(intent, SCAN_QR_CODE);

}

});

auth_btn.setVisibility(View.INVISIBLE);

newAcc_btn.setVisibility(View.INVISIBLE);

mEdit.setVisibility(View.INVISIBLE);

}

@Override

public void onActivityResult(int requestCode, int resultCode, Intent intent) {

if (requestCode == SCAN_QR_CODE) {

if (resultCode == RESULT_OK) {

//Successful scan

processQR(intent.getStringExtra("SCAN_RESULT"));

//String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); //format of the code

//Toast.makeText(this, contents, Toast.LENGTH_LONG).show();

} else if (resultCode == RESULT_CANCELED) {

Toast.makeText(this, "Scan failed!", Toast.LENGTH_SHORT).show();

}

}

if (requestCode == REQUEST_ENABLE_BT) {

// When the request to enable Bluetooth returns

if (resultCode == Activity.RESULT_OK) {

// Bluetooth is now enabled, so set up a chat session

setupSession();

} else {

// User did not enable Bluetooth or an error occurred

Log.d(TAG, "BT not enabled");

Toast.makeText(this, "Bluetooth cannot be enabled", Toast.LENGTH_SHORT).show();

finish();

}

}

}

public void processQR (String content) {

String[] contents = content.split(" ");

if (contents.length != 3) {

Log.e(TAG, "Not well formed QR Code");

}

else {

appKey = contents[APPKEY];

macAdd = contents[MACADR];

my_uuid = UUID.fromString(contents[UUID_STR]);

Log.d(TAG, macAdd);

String appName = db.getAppName(appKey);

Log.d(TAG, appName);

if (appName == null)

return;

Toast.makeText(this, appName, Toast.LENGTH_SHORT).show();

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(macAdd);

try {

bt = device.createInsecureRfcommSocketToServiceRecord(my_uuid);

bt.connect();

in = bt.getInputStream();

out = bt.getOutputStream();

} catch (IOException e) {

e.printStackTrace();

}

Log.d(TAG, "Set new acc visible");

mEdit = (EditText)findViewById(R.id.text_username);

mEdit.setVisibility(View.VISIBLE);

newAcc_btn.setVisibility(View.VISIBLE);

if (db.appAccounts(appKey).getCount() > 0)

auth_btn.setVisibility(View.VISIBLE);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值