1

だから私はAndroidプログラミングが初めてで、入力データを取得して電話に保存し、電子メールで送信するアプリを作成しようとしています。私は現在立ち往生しています。私のアプリには現在、保存されない入力と、テキスト文字列を取得してテキストメッセージのテキストとして配置できる共有ボタンがあります。これが、私がこれまでに把握したすべてです。

今の私の質問は次のとおりです。入力 (editText1) からテキストを取得し、それをプレーン テキストとして共有機能に設定するにはどうすればよいですか?

オンラインで見たさまざまなことを試してみましたが、エラーが発生しないようにすることはできますが、実際にアプリを開くと、リスト項目を開くとクラッシュ/停止します。

動作する私のフラグメントコードは次のとおりです。

package com.example.nextslidemenuapp;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NavUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;


public class ItemDetailActivity extends FragmentActivity {

protected String mString;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_item_detail);

    // Show the Up button in the action bar.
    getActionBar().setDisplayHomeAsUpEnabled(true);

    // savedInstanceState is non-null when there is fragment state
    // saved from previous configurations of this activity
    // (e.g. when rotating the screen from portrait to landscape).
    // In this case, the fragment will automatically be re-added
    // to its container so we don't need to manually add it.
    // For more information, see the Fragments API guide at:
    //
    // http://developer.android.com/guide/components/fragments.html
    //
    if (savedInstanceState == null) {
        // Create the detail fragment and add it to the activity
        // using a fragment transaction.
        Bundle arguments = new Bundle();
        arguments.putString(ItemDetailFragment.ARG_ITEM_ID, getIntent()
                .getStringExtra(ItemDetailFragment.ARG_ITEM_ID));
        ItemDetailFragment fragment = new ItemDetailFragment();
        fragment.setArguments(arguments);
        getSupportFragmentManager().beginTransaction()
                .add(R.id.item_detail_container, fragment).commit();
    }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();

    if (itemId == R.id.action_share) {
        sharePost();
    }

    if (itemId == android.R.id.home) {
        // This ID represents the Home or Up button. In the case of this
        // activity, the Up button is shown. Use NavUtils to allow users
        // to navigate up one level in the application structure. For
        // more details, see the Navigation pattern on Android Design:
        //
        // http://developer.android.com/design/patterns/navigation.html#up-vs-back
        //
        NavUtils.navigateUpTo(this,
                new Intent(this, ItemListActivity.class));
        return true;
    }
    return super.onOptionsItemSelected(item);
}
final EditText ed1 = (EditText) findViewById(R.id.editText1);

String myString = "text";

private void sharePost() {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, myString);
    startActivity(Intent.createChooser(shareIntent,    
getString(R.string.share_chooser_title)));

}
}

そして、ここに私が編集に集中している特定のコードがあります:

final EditText ed1 = (EditText) findViewById(R.id.editText1);

String myString = "text";

private void sharePost() {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, myString);
    startActivity(Intent.createChooser(shareIntent,
getString(R.string.share_chooser_title)));

}

「テキスト」を editText1 をプルするコードに置き換えようとしています。最終的には、いくつかの入力ボックスをいくつかのセミコロンと連結したいと考えています。

助けてくれてありがとう!

4

1 に答える 1

0

さて、ここにソリューションを投稿しようとしています:

EditText ed1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_detail);

ed1 = (EditText) findViewById(R.id.editText1);
}

private void sharePost() {
   Intent shareIntent = new Intent(Intent.ACTION_SEND);
   shareIntent.setType("text/plain");
   shareIntent.putExtra(Intent.EXTRA_TEXT, ed1.getText().toString());
   startActivity(Intent.createChooser(shareIntent,
   getString(R.string.share_chooser_title)));
}

あなたの質問はまだ非常に曖昧であるため、これは最終的な解決策ではありません。しかし、これはそれがどのように見えるべきかです。結論 : editText をインスタンス化し、editText からデータを取得し、shareIntent を介してそのテキストを共有します。

于 2013-09-05T22:13:50.467 に答える