访问其他布局的视图

时间:2014-10-13 13:03:52

标签: android android-fragments android-fragmentactivity

我有一个MainActivity和两个片段,即Input.java和Output.java。我想访问位于输入片段中output_layout的textview(更确切地说,如果我点击input_layout中的按钮,output_layout的textview应该更改)。我怎样才能做到这一点?我在main_activity中动态调用这些input_layout和out_put布局。

我初学者,请原谅我的无知。我们将非常感谢您的帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

尝试使用接口。 例如。

 public interface OnOutputFragmentTextChanger {
        public void onChangeText(String what);
    }

在Input.class的onAttach方法中做下一步:

 @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        // This makes sure that the container activity has implemented
        // the callback interface. If not, it throws an exception
        try {
            mCallback = (OnOutputFragmentTextChanger) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnOutputFragmentTextChanger");
        }
    }

在你的OnClickListener中调用mCallback.onChangeText(" Foooo");

接下来在Output类中创建方法

public void updateInputView(String what)
{
    mTextView.setText(what);
}

接下来在Activity和Override方法中实现OnOutputFragmentTextChanger onChangeText(String what):

 public class MainActivity extends FragmentActivity implements OnOutputFragmentTextChanger
    {
    //do somwthing 

        @Override
        public void onChangeText(String what)
        {
             InputFragment inputfragment = (InputFragment)
             getSupportFragmentManager().findFragmentById(R.id.fragment); // or try                findFragmentByTag

             if (inputfragment != null) 
               {
                     inputfragment.updateInputView("some string");
               }
        }
    }

答案 1 :(得分:-1)

您可以将输入布局中的TextView声明为相应片段中的公共静态,并直接在其他片段中将其设置为您要设置按钮的值onklick