1

フラグメントには次のシナリオがあります。

     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()メソッドでボタンのテキストが変更されません。外部から同じメソッドを呼び出すと、すべてが正常に機能しています。誰かがこの問題を整理するのを手伝ってくれますか?

4

1 に答える 1

1

Button がレイアウト ファイル内で定義され、コードが正しく入力されていると仮定すると、クラスで b を定義して、コード全体から b にアクセスできるように設定します。

Button b;

次に、次のように onCreateView() 内で b にアクセスします。

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

onActivityResult 内では、好きなように b を使用してください。

b.setText(str); 
于 2012-12-17T19:59:01.273 に答える