我试图从另一项活动中拨打电话。这个方法里面有一个Intent,我确定问题出在intent的上下文中。我读了一些类似的答案,但我不能这样做......我得到一个nullpointerException
ActivityA
这是有意图的方法......
public void startGreetingRecorder() {
Intent recordIntent = new Intent(this, NewActivity.class);
.
.
startActivityForResult(recordIntent,);
}
ActivityB
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.menu_save) {
ActivityA.startGreetingRecorder();
}
return true;
}
这是我试图做的但是没有工作。
ActivityA
这是有意图的方法......
public void startGreetingRecorder(Context context) {
Intent recordIntent = new Intent(context, NewActivity.class);
.
.
startActivityForResult(recordIntent,);
}
ActivityB
受保护的上下文上下文;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.menu_save) {
ActivityA.startGreetingRecorder(context);
}
return true;
}
答案 0 :(得分:0)
您正在静态调用该方法,因此您需要将该方法标记为静态以及发送上下文。
活动A :(接收者)
public static void startGreetingRecorder(final Activity a) {
Intent recordIntent = new Intent(a, NewActivity.class);
.
.
a.startActivityForResult(recordIntent,<SomeInteger>);
}
活动B :(来电者)
[编辑] - 添加了整数参数。这用于处理结果。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == R.id.menu_save) {
ActivityA.startGreetingRecorder(this);
}
return true;
}
如果您实际上不需要处理结果,可以使用context.startActivity(intent)
答案 1 :(得分:0)
您不能以这种方式从其他Activity调用和调用活动方法,您可以使用EventBus实现活动之间的通信。
尝试使用EventBus