无法从onActivityResult()访问视图

时间:2012-12-17 19:31:12

标签: android android-layout

我在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()方法中的按钮文本没有改变。如果我从外面调用相同的方法,那么每件事都很好。任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

假设Button在布局文件中定义并且您的代码输入正确,请通过在您的类中定义b来设置b以通过整个代码访问:

Button b;

然后在onCreateView()中访问b,如下所示:

b = (Button)view .findViewbyId(1); 

在onActivityResult中只需使用b但你喜欢它:

b.setText(str);