Android 从类调用新布局

Android 从类调用新布局,android,android-layout,android-studio,Android,Android Layout,Android Studio,我想知道是否可以在类上使用setContentView?我计划在课程结束后调用一个新的布局。所以基本上,一旦我检测到nfc标签,我会尝试改变视图 主要活动 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main__screen); readCard = ne

我想知道是否可以在类上使用setContentView?我计划在课程结束后调用一个新的布局。所以基本上,一旦我检测到nfc标签,我会尝试改变视图

主要活动

@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);
    }

}
阶级


您不能以这种方式执行您想要的操作,因为只有
活动
被“授权”修改其内容和子视图。您也不能从后台触摸UI线程

有一些方法可以实现您想要的,我将尝试列出一些:

  • 一旦你的班级完成了它应该做的事情,你就可以向
    活动
    发送一条消息。您可以使用(如图所示),或
  • 你可以尝试使用某种类型的倾听者
  • 使用

有关如何与UI线程通信的更多信息(在本例中,是与
活动
),请查看。

您不能以这种方式执行任何操作,因为只有
活动
被“授权”修改其内容和子视图。您也不能从后台触摸UI线程

有一些方法可以实现您想要的,我将尝试列出一些:

  • 一旦你的班级完成了它应该做的事情,你就可以向
    活动
    发送一条消息。您可以使用(如图所示),或
  • 你可以尝试使用某种类型的倾听者
  • 使用

有关如何与UI线程通信的更多信息(在本例中,使用
活动
),请查看。

活动是类的一种类型。。。你可以在活动中调用它。或者在调用类时调用它,以便活动更新其视图实例化对象后是否要更改视图?是吗?我不太清楚我是否明白。为什么你不能再次调用
setContentView
?如果你只是调用另一个类而没有更改活动,Mauker是对的。你能分享一些代码吗?活动是类的一种类型。。。你可以在活动中调用它。或者在调用类时调用它,以便活动更新其视图实例化对象后是否要更改视图?是吗?我不太清楚我是否明白。为什么你不能再次调用
setContentView
?如果你只是调用另一个类而没有更改活动,Mauker是对的。你能分享一些代码吗?好的。非常感谢你。至少我得到了一个澄清,我所做的不会起作用。非常感谢你!好吧非常感谢你。至少我得到了一个澄清,我所做的不会起作用。非常感谢你!
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();
        }
    }
}