我的viewpager中有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();
}
}
希望有所帮助,