2016-05-31 3 views
0

WorkoutDetailFragment가 형 변환되는 MainActivity.java의 행은 수행 할 수없는 오류를 표시합니다. 왜 작동하지 않는지 말해주십시오. 책에서 코드를 복사했습니다.코드에서 잘못된 점을 알려주십시오.

MainActivity

package gangster.workout; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    WorkoutDetailFragment frag = (WorkoutDetailFragment) getFragmentManager().findFragmentById(R.id.detail_frag); 
    frag.setWorkout(1); 
} 
} 

Workout.Java

package gangster.workout; 


public class Workout { 
private String name; 
private String description; 

public static final Workout[] workouts = { 
     new Workout("The Limb Loosener" , " Pta nhi kya ksgdrna hai isme") , 
     new Workout("The Timb Loosener" , " Pta nhi kya asdfasasfasasdkrna hai isme") , 
     new Workout("The Pimb Loosener" , " Pta nhi kyaasf krna hai isme") , 
     new Workout("The Zimb Loosener" , " Pta nhi kyasfasa krna hai isme") , 
}; 
private Workout(String name , String description){ 
    this.name = name; 
    this.description = description; 
} 

public String getDescription(){ 
    return description; 
} 
public String getName(){ 
    return name; 
} 
public String toString(){ 
    return this.name; 
} 
} 

WorkoutDetailFragment.java

package gangster.workout; 


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


public class WorkoutDetailFragment extends Fragment { 
private long workoutId; 

public void setWorkout(long id) { 

    this.workoutId = id; 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    View view = getView(); 
    if (view != null) { 
     TextView title = (TextView) view.findViewById(R.id.textTitle); 
     Workout workout = Workout.workouts[(int) workoutId]; 
     title.setText(workout.getName()); 
     TextView description = (TextView) view.findViewById(R.id.textDescription); 
     description.setText(workout.getDescription()); 
    } 

} 

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

} 

답변

1

사용 getSupportFragmentManager() 대신 getFragmentManager()

+0

야, 그것을 작동합니다. 고맙습니다. 그래도 그걸 사용하는 것이 잘못 되었나요? –

+1

코드에서 'android.support.v7.app.AppCompatActivity' 및'android.support.v4.app.Fragment'를 사용 중이며 둘 다 Android 지원 라이브러리에 있음을 나타냅니다. 이것은'getSupportFragmentManager()'를 호출하여 올바른'FragmentManager'를 가져와야합니다. 당신의 문제를 해결하기 때문에 대답을 받아주세요 :) –

+0

나는 초보자입니다. 좀 더 정교하게 설명해 주시겠습니까? : P 4 분 후에 답변을 수락 할 수 있습니다. –

관련 문제