2016-05-10 99 views
-1

TextView.setText在函数调用中不起作用。我在一个方法中传递数据(“changeText”)。该代码不起作用。应用停止工作。当我试图改变文本onActivityCreated它的工作原理,但是当我在一个函数TextView setText方法不能在片段中工作

public class Fragment_b extends Fragment { 

TextView tv; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_b, container, false); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    tv = (TextView) getActivity().findViewById(R.id.textView); 
    changeText(90); 
} 
public void changeText(int data) 
{ 
    tv = (TextView) getActivity().findViewById(R.id.textView); 
    tv.setText(String.valueOf(data)); 
} 
} 
+1

当你说应用程序停止工作,是一个异常抛出?在调试代码时,你是否验证了'tv'是一个有效的对象? –

+0

发布您的位置.... –

回答

0

传递数据,它不工作,首先宣布你MAINVIEW全球。然后用那个来寻找你的视图,调用getActivty()。findViewById ...没有使用与你相同的布局。

private View rootView; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

rootView = inflater.inflate(R.layout.fragment_b, container, false); 
    return rootView; 
} 

然后

tv = (TextView) rootView.findViewById(R.id.textView); 
0
public class Fragment_b extends Fragment { 

     TextView tv; 
     @Nullable 
     @Override 



     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle  savedInstanceState) { 
       View v = inflater.inflate(R.layout.fragment_b, container, false); 
tv = (TextView)v.findViewById(R.id.textView); 
return v; 
      } 

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

     changeText(90,tv); 
     } 
     public void changeText(int data,TextView tv) 
     { 
     tv.setText(String.valueOf(data)); 
     } 
    } 
0
getActivity().runOnUiThread(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      changeText(90); 
     } 
    });