我想知道是否可以在课堂上使用setContentView?我打算在调用类后调用新的布局。所以基本上,一旦我检测到nfc标签,我就试图改变视图。
Main_Activity
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main__screen);
readCard = new ReadCard(this);
enableReaderMode();
}
public void enableReaderMode()
{
Activity activity = this;
NfcAdapter nfc = NfcAdapter.getDefaultAdapter(activity);
if (nfc != null)
{
nfc.enableReaderMode(activity, readCard, READER_FLAGS, null);
}
}
类
private Main_Screen mainScreen;
private Context context;
public String PINHolder = null;
IsoDep isoDep;
Activity Main_Screen = (Activity) context;
public ReadCard(Main_Screen mainScreen)
{
this.mainScreen = mainScreen;
}
@Override
public void onTagDiscovered(Tag tag)
{
isoDep = IsoDep.get(tag);
if (isoDep != null)
{
beepSound.start();
try
{
isoDep.connect();
mainScreen.setContentView(R.layout.pin_login);
} catch (IOException e)
{
e.printStackTrace();
}
}
}
答案 0 :(得分:2)
你无法以你想要的方式做到这一点,因为只有Activity
被“授权”才能修改其内容和子视图。您也无法从后台触摸UI线程。
有些方法可以达到你想要的效果,我会尝试列出一些:
Activity
“发送信息”。您可以使用LocalBroadcastManager
(如this question上所示)或Greenrobot's EventBus; 有关如何与UI线程进行通信的更多信息(在本例中为Activity
),请查看Android training guide。