ANDROID:从膨胀的弹出视图启动新活动
Posted
技术标签:
【中文标题】ANDROID:从膨胀的弹出视图启动新活动【英文标题】:ANDROID: launch new activity from inflated pop up view 【发布时间】:2017-07-12 16:46:50 【问题描述】:我有一个 main_activity,通过按一个按钮我启动一个要完成的表单:
popup= getLayoutInflater().inflate(R.layout.pop_up, null);
signup = new SignUp(popup);
register = (Button) findViewById(R.id.sign_up);
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(MyLocalBartender.this);
alertBuilder.setView(popup);
final AlertDialog dialog = alertBuilder.create();
register.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
dialog.dismiss();
dialog.show();
);
您可以看到我正在使用第二个活动类 (SignUp) 来管理表单,而不是启动它的根类 (main_activity)。 在这个新类中,我设置了所有点击侦听器等,以通过实现 OnClickListener 的第三个类验证输入。
到目前为止一切正常。但现在我想测试名为 HomePage 的页面/活动,如果填写了表单,用户应该登陆该页面/活动。 所以我不知道的是我从前一个处理程序中删除了点击侦听器,并创建了一个匿名侦听器来简单地在按下注册按钮时打开新活动:
// signup_registerButton.setOnClickListener(new SignupListener(signup_emailField,signup_passwordField1,
// signup_passwordField2, signup_textTemp,signup_organiserRadio, signup_staffRadio,signup_alertMessage));
////*************************TEST******************* START
signup_registerButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent menu = new Intent(getApplicationContext(), HomePage.class);
startActivity(menu);
);
////*************************TEST******************* END
但这会返回 NullPointerException。 我尝试直接从 main_activity 启动 HomePage.class 并且它可以工作,并且我尝试从这个 REGISTER 按钮启动主要活动,但它不起作用,所以这告诉我问题出在此处.
【问题讨论】:
我只是通过在 main_activity 类中定义一个方法来对问题进行排序,该方法将启动新活动并从不同的类调用此方法。虽然我认为这不是一种适当的干净编码风格。有什么建议吗? 【参考方案1】:您需要将 Activity 上下文传递给 Intent 构造函数。活动上下文和应用程序上下文不同。活动上下文包含更多信息。
在你的情况下,你可以这样做:
signup_registerButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent menu = new Intent(yourActivity, HomePage.class);
startActivity(menu);
);
yourActivity 是您的活动实例。您可以将其作为变量传递或通过 main_activity.this 从类内任何位置的内部类(侦听器)访问它。
【讨论】:
它没有给我那个选项。顺便说一句,main_activity 类扩展了 AppCompatActivity,与处理弹出表单的 Activity 相同以上是关于ANDROID:从膨胀的弹出视图启动新活动的主要内容,如果未能解决你的问题,请参考以下文章
Android:延迟加载 DataBinding 视图会引发异常
无法启动活动 ComponentInfo 二进制 XML 文件第 13 行:膨胀类 com.google.android.material.appbar.MaterialToolbar 时出错