如何调用从Android的一个Dialogfragment活动?Android、Dialogfragment

由网友(原来爱笑吧)分享简介:我要调用从Dialogfragment一个活动,我重视以下code和logcat的供您参考什么我都tried.Kindly向我提供你的知识就可以了。谢谢你。意向意图=新的意图(getActivity(),LinkActivity.class);。getActivity()startActivityForResult(...

我要调用从Dialogfragment一个活动,我重视以下code和logcat的供您参考什么我都tried.Kindly向我提供你的知识就可以了。谢谢你。

 意向意图=新的意图(getActivity(),LinkActivity.class);
。getActivity()startActivityForResult(意向,0);
 

logcat的:

  

02-12 13:47:17.345:E / AndroidRuntime(670):致命异常:主要   02-12 13:47:17.345:E / AndroidRuntime(670):显示java.lang.NullPointerException   02-12 13:47:17.345:E / AndroidRuntime(670):在android.content.ComponentName(ComponentName.java:75)   02-12 13:47:17.345:E / AndroidRuntime(670):在android.content.Intent(Intent.java:3122)   02-12 13:47:17.345:E / AndroidRuntime(670):在com.firstadvantage.activities.LogDialog.LinkActivity(LogDialog.java:93)   02-12 13:47:17.345:E / AndroidRuntime(670):在com.firstadvantage.activities.LogDialog $ 3.onCommandFinished(LogDialog.java:75)   02-12 13:47:17.345:E / AndroidRuntime(670):在com.firstadvantage.buisnesslayer.commands.Command $ 3.run(Command.java:85)   02-12 13:47:17.345:E / AndroidRuntime(670):在android.os.Handler.handleCallback(Handler.java:605)   02-12 13:47:17.345:E / AndroidRuntime(670):在android.os.Handler.dispatchMessage(Handler.java:92)   02-12 13:47:17.345:E / AndroidRuntime(670):在android.os.Looper.loop(Looper.java:137)   02-12 13:47:17.345:E / AndroidRuntime(670):在android.app.ActivityThread.main(ActivityThread.java:4424)   02-12 13:47:17.345:E / AndroidRuntime(670):在java.lang.reflect.Method.invokeNative(本机方法)   02-12 13:47:17.345:E / AndroidRuntime(670):在java.lang.reflect.Method.invoke(Method.java:511)   02-12 13:47:17.345:E / AndroidRuntime(670):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)   02-12 13:47:17.345:E / AndroidRuntime(670):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)   02-12 13:47:17.345:E / AndroidRuntime(670):在dalvik.system.NativeStart.main(本机方法)

解决方案

有两种方式从片段打电话承载片段活动:

简单地强制转换为HostActivity

 ((HostActivity)getActivity())methodInActivity()。
 
Android基于DialogFragment封装一个通用的Dialog

在片段作为监听器使用界面,HostActivity实现监听器:

 私人SuperListener hostActivity;

//在片段中,定义interfce
公共接口SuperListener {
    //例如确认对话框
    无效getDialogOk(查看dialogView);
}

//在构造函数中,从HostActivity得到监听器实例
公共YourDialogFragment(SuperListener hostActivity)
{
   this.hostActivity = hostActivity;
}

//当`Ok`点击
hostActivity.getDialogOk(dialogView);
 

希望这是显而易见的。

I want to call an activity from Dialogfragment, I have attached the code and logcat below for your reference on what I have tried.Kindly provide me your knowledge on it. Thank you.

 Intent intent = new Intent(getActivity(), LinkActivity.class);
getActivity().startActivityForResult(intent, 0);

Logcat:

02-12 13:47:17.345: E/AndroidRuntime(670): FATAL EXCEPTION: main 02-12 13:47:17.345: E/AndroidRuntime(670): java.lang.NullPointerException 02-12 13:47:17.345: E/AndroidRuntime(670): at android.content.ComponentName.(ComponentName.java:75) 02-12 13:47:17.345: E/AndroidRuntime(670): at android.content.Intent.(Intent.java:3122) 02-12 13:47:17.345: E/AndroidRuntime(670): at com.firstadvantage.activities.LogDialog.LinkActivity(LogDialog.java:93) 02-12 13:47:17.345: E/AndroidRuntime(670): at com.firstadvantage.activities.LogDialog$3.onCommandFinished(LogDialog.java:75) 02-12 13:47:17.345: E/AndroidRuntime(670): at com.firstadvantage.buisnesslayer.commands.Command$3.run(Command.java:85) 02-12 13:47:17.345: E/AndroidRuntime(670): at android.os.Handler.handleCallback(Handler.java:605) 02-12 13:47:17.345: E/AndroidRuntime(670): at android.os.Handler.dispatchMessage(Handler.java:92) 02-12 13:47:17.345: E/AndroidRuntime(670): at android.os.Looper.loop(Looper.java:137) 02-12 13:47:17.345: E/AndroidRuntime(670): at android.app.ActivityThread.main(ActivityThread.java:4424) 02-12 13:47:17.345: E/AndroidRuntime(670): at java.lang.reflect.Method.invokeNative(Native Method) 02-12 13:47:17.345: E/AndroidRuntime(670): at java.lang.reflect.Method.invoke(Method.java:511) 02-12 13:47:17.345: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 02-12 13:47:17.345: E/AndroidRuntime(670): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 02-12 13:47:17.345: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(Native Method)

解决方案

There are two ways to call from Fragment to Activity that hosts the Fragment:

Simply casting to HostActivity

((HostActivity) getActivity()).methodInActivity();

Use interface in Fragment as listener, HostActivity implements the listener:

private SuperListener hostActivity;

//In Fragment, define interfce
public interface SuperListener{
    //for example a confirm dialog
    void getDialogOk(View dialogView);
}

//in constructor, get listener instance from HostActivity
public YourDialogFragment(SuperListener hostActivity)
{
   this.hostActivity = hostActivity;
}

//when `Ok` clicked
hostActivity.getDialogOk(dialogView);

Hope this is clear.

阅读全文

相关推荐

最新文章