我从我的MainActivity中调用一个MainActivity,在这个SubActivity中,我必须在MainActivity中调用一个方法。如果我用
MainActivity test = new MainActivity();
...
test.method("test");我得到一个致命的外泄“无法启动活动”NullPointerException。
我也尝试过MainActivity.method("test"),但这也不起作用。更改MainActivity中的变量有效,由MainActivity.booleanVariable = true;完成
是什么导致了NullPointerException?我是不是错过了一些基本的东西--我现在太盲目了?
发布于 2013-10-28 22:17:43
永远不要像这样实例化Activity
MainActivity test = new MainActivity();使用Intent调用Activity。现在..。
我从我的MainActivity中调用一个MainActivity,在这个SubActivity中,我必须在MainActivity中调用一个方法。
如果它是子Activity,那就意味着它是extends MainActivity。如果是这样的话,你就可以做如下的事情
@Override
public returnType myMethod(params) // where returnType is int, boolean, void etc...
// and params are parameters the method takes (if any)
{
super.myMethod(params);
// other code if needed
}如果子Activity没有extends MainActivity,那么请详细说明为什么需要这样做,我们可以帮助找到更好的方法。
编辑
从上面读到你的评论("...catching it with onActivityResult in my MainActivity"),我认为您对startActivityForResult()的工作方式感到困惑,一开始可能很棘手。如果你打电话
Intent i = new Intent(SecondActivity.this, FirstActivity.class);
// put extras if needed
starActivityForResult(i);在第二个Activity中,onActivityResult()也将进入第二个Activity。当您在那里调用FirstActivity时,将从setResult()调用它。
发布于 2013-10-28 22:17:03
在MainActivity In onCreate中(例如):
SecondActivity second = new SecondActivity();
second.test("Hello second");在SecondActivity中:
class SecondActivity extends Activity
{
public static void test(String term)
{
Log.d("SecondActivity",term);
}
}但!
我强烈建议您在实际项目中不要使用这种方法。还有测试-会的。
为了获得最好的方式,您必须使用意图,或使用回调(谷歌它对此)
例子:
class MainActivity extends Activity
{
public void onCreate(Bundle onSavedInstanceState)
{
super.onCreate(onSavedInstanceState);
Intent intent = new Intent(this,SecondActivity.class);
intent.putExtra("hi","Hello world!");
startActivity(intent);
}
}
class SecondActivity extends Activity
{
public void onCreate(Bundle onSavedInstanceState)
{
super.onCreate(onSavedInstanceState);
Intent intent = getIntent();
Bundle temp = getIntent().getBundle();
Lod.d("SecondActivity",temp.getStringExtra("hi","UNDEFINED") +"");
}
}你必须在“宣言”中声明这两项活动。我想我给你一个延长时间的起点。
https://stackoverflow.com/questions/19645998
复制相似问题