【问题标题】:Sharedpreference Edittext in Fragment片段中的 Sharedpreference Edittext
【发布时间】:2019-03-09 21:54:08
【问题描述】:

到目前为止,我有一个片段,其中有 2 个编辑文本和一个按钮。我需要做的是保存我在edittext中编写的文本,这样当我更改为另一个片段然后返回时,我会看到我在Edittexts中写的最后一件事。

为了解决这个问题,我使用了sharedpreference,但我只能使用按钮使其工作,以便在我按下按钮时保存edittext中的文本,然后在片段中的onCreate上检索它。我想要的是自动更新,所以我不必按任何按钮。

public class KontaktFragment extends Fragment {

private EditText beskedTekst;
private EditText emneTekst;
private Button kontaktSend;

public KontaktFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate( R.layout.fragment_kontakt, container, false );

    beskedTekst = (EditText) view.findViewById( R.id.beskedEdit );
    emneTekst = (EditText) view.findViewById( R.id.emneEdit );
    kontaktSend = (Button) view.findViewById( R.id.kontaktButton );

    hentTekst();

    kontaktSend.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sendMail();
        }
    } );
    return view;
}

public void sendMail() {

    String besked = beskedTekst.getText().toString();
    String emne = emneTekst.getText().toString();

    //String recipientList = kontaktTekst.getText().toString();
    //String[] recipients = recipientList.split(",");

    gemTekst();

    Intent intent = new Intent( Intent.ACTION_SEND );
    intent.putExtra( Intent.EXTRA_EMAIL, new String[]{"xxx"} );
    intent.putExtra( Intent.EXTRA_SUBJECT, emne );
    intent.putExtra( Intent.EXTRA_TEXT, besked );

    intent.setType( "message/rfc822" );

    startActivity( Intent.createChooser( intent, "Vælg en email klient" ) );

    intent.setData( Uri.parse( "mailto:" ) );
}

public void gemTekst() {

    String besked = beskedTekst.getText().toString();
    String emne = emneTekst.getText().toString();

    SharedPreferences sp = this.getActivity().getSharedPreferences( "kontakt", 0 );
    SharedPreferences.Editor sedt = sp.edit();
    sedt.putString( "textvalue", besked );
    sedt.putString( "txtopertaive", emne );
    sedt.commit();

}

public void hentTekst() {

    SharedPreferences sp = getActivity().getSharedPreferences( "kontakt", 0 );
    String tValue = sp.getString( "textvalue", "" );
    String tOperative = sp.getString( "txtopertaive", "" );

    beskedTekst.setText( tValue );
    emneTekst.setText( tOperative );   

   }

}

【问题讨论】:

  • 将此方法gemTekst();添加到onPause()方法中。

标签: android android-fragments sharedpreferences


【解决方案1】:

在片段中添加onPause生命周期方法并添加您需要的方法。

 @Override
public void onPause() {
    super.onPause();
    gemTekst();
}

【讨论】:

  • 欢迎提供帮助..!快乐编码:)
猜你喜欢
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多