2011-10-26 50 views
0

如何调用我的函数?call static void

public static void dial(Activity call) 
{ 
    Intent intent = new Intent(Intent.ACTION_DIAL); 
    call.startActivity(intent); 
} 

显然不是:

dial(); /*Something should be within the brackets*/ 
+0

试着通过'this'作为参数(假设你从一个活动当然开始) –

+0

dial(this);作品。像阿纳金说:它的工作! – Patrick

回答

0

您不能传递null。你必须发送一个上下文对象。

您的功能位于何处?如果它在一个Activity或类似的内部,只需传递“this”作为参数即可。

如果它位于BroadcastListener或Service中,只需将参数更改为Context并传递“this”即可。

+0

工程就像一个魅力! – Patrick

+0

如果我从另一个班级打电话,该怎么办?让我们说带该函数的类被命名为Action。我知道我不能这样做:Action.dial(this); – Patrick

+0

@Patrick当你调用方法时,传递上下文很常见。调用一个实用程序类。但是因为你总是从一个Activity或者BroadcastListener或者Service开始执行你的逻辑,并且这些都是Context子类,所以你总是可以使用一些东西。 – Emmanuel

2

你应该尝试
ClassName.dial();

的原因是,静态方法属于类本身,而不是它的一个单独的实例。致instance.dial()是合法的,但不鼓励。

+0

ClassName.dial()因为“活动调用”而不起作用 Ive尝试过ClassName.dial(null)和ClassName.dial(call)以及。 – Patrick

+0

@帕特里克,你会得到什么问题?通常情况下,你的方法至少应该编译。带有“null”的调用会抛出一个NullPtrException – kostja

+0

两者都会编译,但是当我运行应用程序时,我得到了“强制关闭”:D – Patrick

1

你应该用你的ClassName.StaticMethod ....调用类

0

什么exaclty是问题的一个静态方法?

如果你有一个像

public class Test { 
    public void nonStaticFct() { 
     staticFct(); 
    } 

    public static void staticFct() { 
     //do something 
    } 
} 

完美地工作(即使你应该总是通过Classname.FctName调用静态函数的类(Test.staticFct()

我想这里的问题是缺少的参数。

[编辑]很显然我错了,根据Java Code Conventions,你可以通过简单地调用它使用一个类方法,不使用类名(即使它看起来很奇怪,因为我希望一个隐含的this.staticFct() - 但可能Java编译器足够智能)

相关问题