繁体   English   中英

在Android的Fragment中调用活动意图

[英]Calling activity intent in Fragment in Android

我试图从一个片段中调用一个活动类。 我已经实现了OnClickListener及其方法。

    if(v.getId() == sortbutton.getId())
    {
        //callSorting();
        Intent intent = new Intent(getActivity(), EMB_SortList.class);
        //startActivityForResult(intent, REQUEST_CODE_LEVEL);
        startActivity(intent);
    }

这是我的Java文件:

public class ListViewFragment extends Fragment implements OnClickListener 
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) 
{
    if (rootView != null) 
    {
        ViewGroup parent = (ViewGroup) rootView.getParent();

        if (parent != null)
            parent.removeView(rootView);
    }
    try 
    {
        rootView = inflater.inflate(R.layout.list, container, false);
    } 
    catch (InflateException e) 
    {

    }

    sortbutton = (TextView) rootView.findViewById(R.id.sortText);
    sortbutton.setOnClickListener(this);        

    return rootView;
}

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
}

但我遇到一个奇怪的错误。

03-16 19:40:20.620: E/AndroidRuntime(1346): FATAL EXCEPTION: main
03-16 19:40:20.620: E/AndroidRuntime(1346): android.app.SuperNotCalledException: Activity {com.ylg.Link/com.ylg.Link.SortList} did not call through to super.onCreate()
03-16 19:40:20.620: E/AndroidRuntime(1346):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2259)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at android.app.ActivityThread.access$700(ActivityThread.java:159)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at android.os.Looper.loop(Looper.java:176)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at android.app.ActivityThread.main(ActivityThread.java:5419)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at java.lang.reflect.Method.invokeNative(Native Method)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at java.lang.reflect.Method.invoke(Method.java:525)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
03-16 19:40:20.620: E/AndroidRuntime(1346):     at dalvik.system.NativeStart.main(Native Method)

我不确定这里出什么问题了吗? 有人可以帮我解决这个问题吗?

谢谢!

显然,此类未使用正确的方法onCreate

EMB_SortList.class

您需要检查四倍

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

实际上,您需要用我们的答案之一替换它,并确保您要扩展Activity。

--------------------->开发人员,我认为您将此代码放在了片段中。

@Override
public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
}

如果已删除,则需要将其删除。

该代码不会出现在您的片段中,而会出现在您要创建的活动中。

加入this.getActivity()中的位置getActivity()

if(v.getId() == sortbutton.getId())
    {
        //callSorting();
        Intent intent = new Intent(this.getActivity(), EMB_SortList.class);
        //startActivityForResult(intent, REQUEST_CODE_LEVEL);
        startActivity(intent);
    }

android.app.SuperNotCalledException:活动{com.ylg.Link/com.ylg.Link.SortList}没有调用到super.onCreate()

您似乎忘记了在活动的onCreate()方法中调用super.onCreate()方法

在EMB_Sortlist.java类中添加

 public void onCreate(Bundle savedInstanceState) {
  //You should override the below method
  super.onCreate(savedInstanceState);
  //Do your work here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM