Android 在公共功能中使用意图
我有一个方法,它正在进行一个巨大的计算,然后调用一个intent,如下所示Android 在公共功能中使用意图,android,android-intent,Android,Android Intent,我有一个方法,它正在进行一个巨大的计算,然后调用一个intent,如下所示 public void sampleMethod(final Context cont) { . . (huge calculation [50-80 lines]) . . Intent intent = new Intent(cont, TimesheetMain.class); finish(); startActivity(intent); } clas
public void sampleMethod(final Context cont)
{
.
.
(huge calculation [50-80 lines])
.
.
Intent intent = new Intent(cont, TimesheetMain.class);
finish();
startActivity(intent);
}
class ActivityB extends Activity
{
.
.
.
Util.sampleMethod(this);
}
这出现在活动“SampleActivity”中。当我试图通过活动“B”中活动“SampleActivity”的对象访问它时,如下所示:
Context context = this;
SampleActivity sa = new SampleActivity();
sa.sampleMethod(context);
从活动“B”访问时,我在代码的startActivity
行中得到一个NullPointerException
。我不知道我在这里哪里出了问题。请帮帮我
编辑2
当我像
cont.startActivity(intent)
那样向它添加上下文时,这似乎是可行的,但我需要知道为什么我不应该在第二个类中使用另一个类或另一个活动的函数?是安卓框架的原因吗?在过去两个月左右的时间里,我一直在这样做(没有意图部分),我从未在emulator或设备(Nextbook professional 7 SE)中遇到任何突然的强制关闭问题;请用一个合法的例子来解释这一点当你这样做时,你不应该自己创建明确的活动实例:
SampleActivity sa=新的SampleActivity()代码>
请更好地描述您的问题以及您希望通过此问题的结果实现的目标。您不应该自己创建明确的活动实例,因为您正在这样做:
SampleActivity sa=新的SampleActivity()代码>
请更好地描述您的问题以及您希望通过此问题的结果实现的目标。请尝试以下更新代码:
public void sampleMethod(final Activity cont)
{
Intent intent = new Intent(cont, TimesheetMain.class);
cont.finish();
cont.startActivity(intent);
}
还可以将此方法移动到一个util类,并从activity调用它,并按如下所示传递activity引用
public void sampleMethod(final Context cont)
{
.
.
(huge calculation [50-80 lines])
.
.
Intent intent = new Intent(cont, TimesheetMain.class);
finish();
startActivity(intent);
}
class ActivityB extends Activity
{
.
.
.
Util.sampleMethod(this);
}
请尝试以下更新的代码:
public void sampleMethod(final Activity cont)
{
Intent intent = new Intent(cont, TimesheetMain.class);
cont.finish();
cont.startActivity(intent);
}
还可以将此方法移动到一个util类,并从activity调用它,并按如下所示传递activity引用
public void sampleMethod(final Context cont)
{
.
.
(huge calculation [50-80 lines])
.
.
Intent intent = new Intent(cont, TimesheetMain.class);
finish();
startActivity(intent);
}
class ActivityB extends Activity
{
.
.
.
Util.sampleMethod(this);
}
Manoj我建议你先熟悉android开发。你不能简单地创建活动对象,也不能仅仅为了调用一个函数。那么我怎么能访问另一个活动的公共函数呢?你不能。将它放在两个活动都可以访问的公共类上(本身充满风险),或者更好,解释为什么要这样做,并寻找另一种方法。就我个人而言,我想不出任何原因。巧合的是,今天早些时候情况有所不同,但将活动视为“黑匣子”才是重点。请编辑您的问题并解释原因。当然还有更好的方法。要回答你的编辑,谷歌搜索“Romain Guy不传递上下文”。如果罗曼这么说,你最好相信;)我的最后一句话。仅仅因为你可以,并不意味着你应该。Manoj我建议你先熟悉android开发。你不能仅仅为了调用一个函数而创建活动对象。那么我怎么能访问另一个活动的公共函数呢?你不能。将它放在两个活动都可以访问的公共类上(本身充满风险),或者更好,解释为什么要这样做,并寻找另一种方法。就我个人而言,我想不出任何原因。巧合的是,今天早些时候情况有所不同,但将活动视为“黑匣子”才是重点。请编辑您的问题并解释原因。当然还有更好的方法。要回答你的编辑,谷歌搜索“Romain Guy不传递上下文”。如果罗曼这么说,你最好相信;)我的最后一句话。法里亚:那我怎么才能访问其他活动的公共功能呢?你不应该这么做。活动是松散耦合的组件,它们不应该知道彼此的存在。但是如果你真的想做,就让它静止,静止?功能还是整个活动本身?Faria:那么我如何访问另一个活动的公共功能?你不应该愿意这样做。活动是松散耦合的组件,它们不应该知道彼此的存在。但是如果你真的想做,就让它静止,静止?功能还是整个活动本身?一个好伴侣;但是ppl说我不应该显式地创建类的对象;我会深入研究它,然后接受你的答案:)@ManojKumar通过一个意图开始它绝对是你应该做的<代码>SampleActivity sa=新的SampleActivity()
不是。我能够以这种方式使用starActivity
,但不能使用startActivityForResult
。你也能帮我吗?人们是对的,你不应该创建活动对象,这就是为什么我要求你使用此
传递活动引用。您面临的startActivityForResult
问题是什么?它表示startActivityForResult(Intent,int)
不适用于类型ContextNice one mate;但是ppl说我不应该显式地创建类的对象;我会深入研究它,然后接受你的答案:)@ManojKumar通过一个意图开始它绝对是你应该做的<代码>SampleActivity sa=新的SampleActivity()
不是。我能够以这种方式使用starActivity
,但不能使用startActivityForResult
。你也能帮我吗?人们是对的,你不应该创建活动对象,这就是为什么我要求你使用此
传递活动引用。您面临的startActivityForResult
问题是什么?它表示startActivityForResult(Intent,int)
不适用于类型上下文