Android导入问题。

时间:2014-10-11 22:59:11

标签: android

嘿伙计们,我认为输入有一些问题。我收到了Cannot make a static reference to the non-static method show(FragmentManager, String) from the type DialogFragment"

下的错误消息MyDialog.show(manager, "MyDialog");

有人知道这意味着什么吗?我正在考虑进口的一些问题,但我不确定。

其余代码:

package com.example.sub_assignment1_2;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;



/**
 * A simple {@link Fragment} subclass.
 * 
 */
public class FragmentB extends Fragment implements MyDialog.Communicator {

    public FragmentB() {
        // Required empty public constructor
    }


    public void showDialog(View v)

    {
            FragmentManager manager=getFragmentManager();
            MyDialog myDialog=new MyDialog();
            MyDialog.show(manager, "MyDialog");
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_b, container, false);
    }


    @Override
    public void onDialogMessage(String message) {
        Toast.makeText(this, message,Toast.LENGTH_SHORT).show(); 

    }

}

我在Toast.makeText(this, message,Toast.LENGTH_SHORT).show();下也遇到了问题显示的错误是:Toast.makeText(this, message,Toast.LENGTH_SHORT).show();我还在考虑导入错误?

如果有人能提供帮助那就太棒了。

2 个答案:

答案 0 :(得分:0)

您的导入是正确的,它只是实际使用情况,特别是来自片段内。

对于对话框:使用myDialog.show()而不是MyDialog.show()

对于祝酒词:您必须获取活动或应用程序上下文。 IE,而不是传递它"这个" [这是一个片段,而不是一个活动],传入,例如," GetApplicationContext()"。 " GetActivity()"作为附注,Toasts可以根据其性质采用应用程序或活动上下文。

答案 1 :(得分:0)

关于您的第一个错误:您需要调用myDialog.show()而不是MyDialog.show()来调用实例尝试调用静态方法的方法实例。

关于您的第二个错误:使用getActivity()代替thisDialogFragment未实施Context)。

P.S。将来,请提出单独的问题。