2014-10-11 2 views
0

안녕 얘들 아 수입에 대한 생각으로 몇 가지 문제가 있습니다. 오류 메시지가 표시됩니다. Cannot make a static reference to the non-static method show(FragmentManager, String) from the type DialogFragment" 이하 MyDialog.show(manager, "MyDialog");Android 가져 오기 문제.

아무도 모릅니다. 가져 오기에 대한 몇 가지 문제를 생각하고 있지만 확실하지 않습니다. 코드의

나머지 : Toast.makeText(this, message,Toast.LENGTH_SHORT).show(); 표시되는 오류에서 나는 또한 문제에 봉착

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();는 가져 오기 오류가?

누군가 도움이된다면 도움이 될 것입니다.

답변

0

가져 오기 기능이 켜져 있습니다. 특히 조각 내에서 실제로 사용하는 것입니다. 대화를 들어

: 사용 myDialog.show() 대신 MyDialog.show의() 축배를 들어

: 당신은 활동 또는 응용 프로그램 컨텍스트를 얻을 수 있습니다. 예를 들어 "GetApplicationContext()"와 같이 "this"(조각이면서 활동이 아닌)를 전달하는 대신 IE에 전달합니다. "GetActivity(),"등. 토스트는 본성으로 인해 응용 프로그램 또는 활동 컨텍스트를 사용할 수 있습니다.

+0

좋아,하지만 myDialog라는 별도의 Java 파일에서 구문 분석을 시도하면 활동으로 계산됩니까? – user3584935

+0

간단히 말해서 : 별도의 자바 파일이 Activity [또는 Activity 클래스의 다른 형태]를 확장하지 않으면 아무 것도 활동이 아닙니다. – MDragon00

0

첫 번째 오류에 대해서는 정적 메서드 호출을 시도하는 인스턴스의 메서드 인스턴스를 호출하려면 MyDialog.show() 대신 을 호출해야합니다. 두 번째 오류에 대해서는

: (Context를 구현하지 않습니다 DialogFragment) getActivity() 대신 this를 사용합니다.

P. 앞으로는 별도의 질문을하십시오.

+0

이렇게 뭔가가 나옵니까? : FragmentB.this.getActivity(); – user3584935

+0

그래,하지만 그냥'getActivity()'를 호출 할 수 있어야한다. –