0

編集テキストから共有インテント エクストラにデータを取得するのに問題があります。何らかの理由で、EditText フィールドが入力されている場合でも、空の文字列が返されます。エディット テキスト フィールドからデータを取得する際に問題を抱えている人々について、同様のスレッドがいくつかあることは知っていますが、それらの回答を自分のコードに適応させることはできないようです。

関連するコードを添付しました。これ以上コードを見る必要がある場合はお知らせください。以下にコードを添付)

   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mDbHelper = new NotesDbAdapter(this);
    mDbHelper.open();

    setContentView(R.layout.note_edit);//Set the layout file 
    setTitle(R.string.edit_note);//Set the title to be displayed in the action bar


    mTitleText = (EditText) findViewById(R.id.title);
    mBodyText = (EditText) findViewById(R.id.body);

   //get the row id of the note in the database form the intent .
    mRowId = (savedInstanceState == null) ? null :
        (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID);
    if (mRowId == null) {
        Bundle extras = getIntent().getExtras();
        mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID)
                                : null;
    }

    populateFields();

}
//THis method is used to create the menu in the Action bar
@Override//This works perfectly fine
public boolean onCreateOptionsMenu(Menu menu) {

    getSupportMenuInflater().inflate(R.menu.main, menu);//inflating the menu layout
    MenuItem actionItem = menu.findItem(R.id.menu_share);//The share button in handled here
    //The share action provider  
    ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
    actionProvider.setShareHistoryFileName(null);
    actionProvider.setShareIntent(createShareIntent());//creating a share intent
    return true;//return true if the menu creation has been successful 
}

//Handles the share intent
private Intent createShareIntent() {//this is where the trouble is
    saveState();
    String body = mBodyText.getText().toString();//this returnes an empty string 
    String title = mTitleText.getText().toString();// this returnes an empty string
    Intent shareIntent = new Intent(Intent.ACTION_SEND);//Setting the action to ACTION_SEND
    shareIntent.setType("text/plain");//setting the text type to plain text
    shareIntent.putExtra(Intent.EXTRA_TEXT,body);//this sends an empty string
    shareIntent.putExtra(Intent.EXTRA_SUBJECT,title);//this sends an empty string
    return shareIntent;
}

私の質問は次のとおりです。2.どうすれば修正できますか?

時間を割いてこれを読んでくれてありがとう。

4

1 に答える 1

0

putExtra内部onCreateOptionsMenuおよび最初 (オプション メニューが作成されているとき) に呼び出されるため、空のテキストが返されますEditText。編集テキストに追加TextChangedListenerして、共有の意図EditTextが変更されるたびに更新できます。

et.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // Update your intent here.
    }
});
于 2014-10-18T18:31:41.270 に答える