好的,所以我有一个在启动时启动的活动(活动一)此活动运行另外两个活动(活动二和活动三),每个活动运行java类,然后加载到触摸事件的另一个活动(活动四)。活动四然后打开主类。所有这些部件都完全按照预期工作。
我遇到的问题是从Main Class和Activity Four开始一项新活动(活动五)。我有我的意图,我的XML布局文件,我的清单正确创建。这就是我对它感到奇怪的地方......
1)如果我将Activity Five放在触摸事件开始时它工作得很好(我的触摸事件处于切换情况。如果我将它放在主类中注册触摸事件或者活动四处理主触摸事件,它可以工作类)。
2)如果我将一个if语句放入触摸事件中,它会失败并且没有错误(处理程序的行为就像事件永远不会发生),除非我将Activity Five放在每个" if"声明(无论我是使用" if"还是多个,非嵌套" if"语句,或者" if / else if"语句都是一样的。总是相同的,处理程序就像没有触摸事件一样,除非所有if语句都启动Activity Five)。
3)如果我将Activity Five放在任何Activity或Main Class中的任何其他地方,并且任何参数都没有,我会收到一条错误消息,说我不能在没有Looper.prepare()的情况下从处理程序启动活动。如果我将Looper.prepare()放入intent调用方法中,那么在我的startActivity(ActivityFive)调用中错误地说空指针异常。
让我试着在这里100%明确......
我根本不会改变意图调用或startActivity()调用。我唯一改变的是位置和周围限定符(if语句)。出于某种原因,startActivity调用仅在我将其置于触摸事件中并且无论什么限定符都注册为true时启动活动时才有效。
我的其他活动都是从触摸事件或彼此之间的顺畅自动流动开始的。
活动五需要通过以下两种方式开始:
1)如果在触摸事件处理程序之外的语句:
if (object1.isGone)
{
...
ActivityFour aFour = new ActivityFour();
Intent aFive = new Intent (afour, ActivityFive.class)
aFour.startActivity(aFive);
}
if (!object1.isGone)
{
(do nothing)
}
2)或者if语句在触摸事件处理程序中:
switch (screen.touchAction)
{
case screen.touch_Middle:
if (object1.isGone)
{
...
ActivityFour aFour = new ActivityFour();
Intent aFive = new Intent (afour, ActivityFive.class)
aFour.startActivity(aFive);
}
if (!object1.isGone)
{
(do nothing)
}
break;
感谢您的帮助,我一定要+1并检查解决这种疯狂的答案。
答案 0 :(得分:0)
你有这个:
ActivityFour aFour = new ActivityFour();
Intent aFive = new Intent (afour, ActivityFive.class)
aFour.startActivity(aFive);
绝对肯定 使用Activity
创建new
的实例!只有Android框架可以创建Android组件的实例(活动,服务,广播接收器,内容提供商)。这是因为这些组件需要Android框架在实例化期间设置正确的Context
。
如果您只想从Activity
开始MainClass
,则需要在创建{{1}实例时将Context
实例传递给MainClass
或者稍后使用MainClass
方法之后需要使用它。然后,当您想要启动set...()
时,您可以执行此操作:
Activity
Intent aFive = new Intent (afour, ActivityFive.class)
context.startActivity(aFive);
可以是Context
(继承自Activity
),也可以是使用{{Context
可以获得的全局应用程序上下文1}}。