Android最简单的方法从另一个片段获取编辑文本值

时间:2016-06-19 12:57:48

标签: android android-fragments android-viewpager

我的viewpager中有4个片段,我想从另一个片段中获取编辑文本值。例如:

我在第三个片段中,我想在第一个片段中获取编辑文本的值。

我该怎么办呢?

4 个答案:

答案 0 :(得分:1)

界面是您的最佳选择。

因为每次都会重新创建viewpager中的片段。你不能在片段中存储值并正确地获取它。

创建变量以在ViewPager托管活动中保存editext值。

String editext_fragment1;

使用Interface从任何片段中写入并从此变量中获取值。

答案 1 :(得分:0)

如果您没有在其他片段中的任何位置重复使用相同的ID,请尝试getActivity().findViewById()。检查它是否为空,然后使用它。

希望它会有所帮助:)

答案 2 :(得分:0)

在MainActivity中创建一个函数和一个全局变量(setter和getter)

private EditText mEditText;

public EditText getEditText(){
     return mEditText;
}

public void setEditText(EditText et){
     this.mEditText = et;
}

在你的FirstFragment中

((MainActivity) getActivity()).setEditText(YOUR_EDITTEXT);

在您需要获取EditText值的ThirdFragment中

if( ((MainActivity) getActivity())getEditText() != null ){
     ((MainActivity) getActivity())getEditText().getText();
}

答案 3 :(得分:0)

为此,您应该通过片段的构造函数传递您的值。

例如,您的第一个片段带有一个调用secondFragment的按钮:

<div class="conversation-message-list" onclick="hideEmoticons()">

                            <?php if ($user->expire == NULL){ ?>
                            <!--geen abbo-->
                            <div class="i-info-msg text-center" style="padding-top:15%;"><div class="pass-frac-item"><p class="title">Je hebt een nieuw bericht ontvangen!<span class="arrow"></span></p></div>
        <p>Zien wie jou een bericht heeft gestuurd en antwoorden? Neem nu een Membership!</p>
        <p>Maak ook gebruik van andere Upgrades, zoals zonder reclame surfen, anoniem profielen bekijken of jezelf in de spotlight plaatsen!</p>

        <a class="i-button-14 i-button-bg-1" href="<?=$system->getDomain()?>/memberships.php">Neem een membership!</a>
    </div>
                            <!--/geen abbo-->
                            <? } else { ?>
                            <!--wel abbo-->
                                <div class="conversation-content" id="messages">
                                    <?php
                                    if($messages->num_rows >= 1) { 
                                        while($message = $messages->fetch_object()) { 
                                            $sender = $system->getUserInfo($message->sender_id);
                                            ?>
                                            <div class="row">
                                                <div class="conversation-message pull-left">
                                                    <div class="pull-left">
                                                        <img src="<?=$system->getProfilePicture($sender)?>" class="img-circle pull-left" style="height:50px;width:50px;">
                                                    </div>
                                                    <div class="well bg-grey pull-left emoticon-small">
                                                        <?php
                                                        if($message->is_sticker == 0) {
                                                            $message->message = $system->secureField($system->smart_wordwrap($message->message));
                                                            echo Emojione\Emojione::shortnameToImage($message->message);
                                                        } else {
                                                            $sticker = $db->query("SELECT * FROM stickers WHERE id='".$message->sticker_id."'");
                                                            $sticker = $sticker->fetch_object();
                                                            echo '<img src="'.$system->getDomain().'/img/stickers/'.$sticker->pack_id.'/'.$sticker->path.'" style="height:80px;width:80px">';
                                                        }
                                                        ?>

                                                    </div>
                                                </div>
                                            </div>
                                            <? } ?>
                                            <!--/wel abbo-->
                                            <? 
                                        } 
                                    }
                                    ?>
                                </div>
                            </div>

                            <div class="col-lg-12 col-md-12 col-sm-12">
                                <div class="conversation-input" style="position:static;">
                                    <div class="row">
                                        <div class="input-group message-input">
                   <?php if((!isset($blocked_msg))&&($user->expire != NULL)) {?>                     
                                            <input type="text" id="message" placeholder="<?=$lang["Enter_Message"]?>" class="form-control input-lg message-input no-border" required>
                                            <span class="input-group-btn">

                                                <a href="#" class="btn btn-default" data-toggle="modal" data-target="#send-gift"><i class="fa fa-fw fa-gift"></i></a>
                                            </span>
                         <?php } if(isset($blocked_msg)) { ?>
                         <input type="text" id="message" placeholder="JE BENT GEBLOKKEERD DOOR DEZE GEBRUIKER." class="form-control input-lg message-input no-border" required>
                        <?php } ?>

                                        </div>
                                    </div>
                                </div>
                            </div>

在你的第二堂课中你应该有这个:

    public class myFirstFragment extends Fragment implements View.OnClickListener {
      private Button myButton;
      private EditText myEdit;

      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          rootView = inflater.inflate(R.layout.myFirstFragment_layout, container, false);
          myButton = (Button) rootView.findViewById(R.id.buttonId);
          myEdit = (EditText) rootView.findViewById(R.id.editTextId);
          myButton.setOnClickListener(this);
          return  rootView;
      }

      @Override
      public void onClick(View v) {
          Fragment fragment;
          switch (v.getId()) {
          case R.id.buttonId:
            fragment = new mySecondFragment(myEdit.getText().toString().trim());
            break;        
          }
          FragmentManager fragmentManager = getFragmentManager();
          fragmentManager.beginTransaction().replace(R.id.contenedor_frag, fragment).commit();
       }
    }

希望有所帮助,