2016-06-14 6 views
-1

자습서를 따르고 있으며 getInstance에서이 오류를 해결할 수 없습니다.은 안드로이드에서 getInstance 메소드를 해결할 수 없습니다.

import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import com.example.s.foodapp.SlidingTab.SlidingTabLayout; 

public class MainActivity extends AppCompatActivity { 
private Toolbar toolbar; 
private ViewPager mPager; 
private SlidingTabLayout mTabs; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar= (Toolbar)findViewById(R.id.app_bar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    mPager=(ViewPager)findViewById(R.id.pager); 
    mTabs=(SlidingTabLayout)findViewById(R.id.tab); 
    mPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager())); 
    mTabs.setViewPager(mPager); 

} 
class MyPagerAdapter extends FragmentPagerAdapter{ 
    String[] tabs; 
    public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
     tabs= getResources().getStringArray(R.array.tabs); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     MyFragment myFragment= MyFragment.getInstance(position);// cannot resolve get instance 
     return myFragment; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return tabs[position]; 
    } 

    @Override 
    public int getCount() { 
     return 3; 
    } 
} 
public static class MyFragment extends Fragment{ 
    private TextView textView; 
    public static MyFragment.getInstance(int position){// cannot resolve get instance 
     MyFragment myFragment= new MyFragment(); 
     Bundle args=new Bundle(); 
     args.putInt("position",position); 
     myFragment.setArguments(args); 
     return myFragment; 
    } 
    @Override 
    public View onCreateView(LayoutInflater layoutInflater, @Nullable ViewGroup container,@Nullable Bundle savedInstanceState){ 
     View view= layoutInflater.inflate(R.layout.fragment_my,container,false); 
     textView= (TextView)view.findViewById(R.id.position); 
     Bundle bundle=getArguments(); 
     if(bundle!=null){ 
      textView.setText("The page selected is "+bundle.getInt("position")); 
     } 
     return view; 
    } 


} 

}

이는 MainActivity 파일입니다 도와주세요. 자습서에서이 작동합니다. 그리고 그것을 시도 할 때 오류가 발생합니다.

+0

왜 정적 인 MyFragment.getInstance()에 점이 있습니까? – GPuschka

+0

그 점도 이해하지 못했습니다. https://www.youtube.com/watch?v=Fl0xMuo10yA –

+0

자습서의 링크는 –

답변

1

이 방법을 바꾸기 만하면됩니다. 메소드 선언의 은 "."을 사용하지 않습니다.

public static MyFragment getInstance(int position){// cannot resolve get instance 
     MyFragment myFragment= new MyFragment(); 
     Bundle args=new Bundle(); 
     args.putInt("position",position); 
     myFragment.setArguments(args); 
     return myFragment; 
    } 
0

'.'을 사용하지 마십시오. 조각의 인스턴스를 반환하는 정적 메서드를 작성하려고합니다. 이렇게 이것을 사용하십시오.

public static MyFragment getInstance(int position) 
{ 
     MyFragment myFragment= new MyFragment(); 
     Bundle args=new Bundle(); 
     args.putInt("position",position); 
     myFragment.setArguments(args); 
     return myFragment; 
} 
관련 문제