我在Fragment中有以下场景:
onCreateView(){
view = inflater.inflate(R.layout.mylayout, container, false);
ScrollView sc = (scrollView)view.findViewById(R.id.sc);
generateUI()
return view; }
public void generateUI() {
horizontalllayout = new LinearLayout(getActivity());
horizontalllayout.setOrientation(android.widget.LinearLayout.HORIZONTAL);
Button newbtn = new Button(getActivity());
newbtn.setId(1);
horizontalllayout.addView(newbtn);
newbtn.setOnClickListener(
public void onClick(View v) {
Intent CaputureIntent = new Intent(getActivity(), s.class);
startActivityForResult(CaputureIntent, 664);
} });
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == 1666){
populate("hi");
}
}
public void populate(String str) {
Button b = (Button)getActivity().findViewbyId(1); //Error
b.setText(str);
}
}
我无法收到上下文。当我从onActivityResult()调用时,populate()方法中的按钮文本没有改变。如果我从外面调用相同的方法,那么每件事都很好。任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
假设Button在布局文件中定义并且您的代码输入正确,请通过在您的类中定义b来设置b以通过整个代码访问:
Button b;
然后在onCreateView()中访问b,如下所示:
b = (Button)view .findViewbyId(1);
在onActivityResult中只需使用b但你喜欢它:
b.setText(str);