【问题标题】:How to mail TextView data on button click with Android-Intent?如何使用 Android-Intent 在单击按钮时发送 TextView 数据?
【发布时间】:2014-06-18 04:29:16
【问题描述】:

我对 android 和 NFC 都很陌生。我正在开发一个NFC 相关的应用程序作为一个大学项目,它从标签中读取数据并列出它们。尽管我能够这样做,但我遇到了intent 的问题,我应该在单击按钮时将此列表邮寄给用户。

谁能告诉我哪里出了问题,并提供详细的分步方法。非常感谢..!!

这是WebServiceActivity

public class WebServiceActivity extends Activity {

    Intent intent = getIntent();
    String studlist = intent.getStringExtra("studlist");

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.webservice);

        TextView mailtext = (TextView) findViewById(R.id.students);
        TextView mailbody = (TextView) findViewById(R.id.emailtext);

        mailbody.setText("Here is the list for Tranport Tracking For Today: \n" + studlist);

        Button send=(Button) findViewById(R.id.emailsendbutton);

        send.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View view) {
                            Log.i("Send email", "");
                            String[] TO = {"h.trivedi04@gmail.com"};    
                            String[] CC = {"h.trivedi04@gmail.com", "harshit.trivedi22@gmail.com"};
                            Intent emailIntent = new Intent(Intent.ACTION_SEND);
                            emailIntent.setData(Uri.parse("mailto:"));
                            emailIntent.setType("text/plain");

                            emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
                            emailIntent.putExtra(Intent.EXTRA_CC, CC);
                            emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Student Transport Track For Today");
                            emailIntent.putExtra(Intent.EXTRA_TEXT, studlist);

                            try {
                               startActivity(Intent.createChooser(emailIntent, "Send mail..."));
                               finish();
                               Log.i("Finished sending email...", "");
                            } catch (android.content.ActivityNotFoundException ex) {
                               Toast.makeText(WebServiceActivity.this, 
                               "There is no email client installed.", Toast.LENGTH_SHORT).show();
                            }
                        }
                });
    }
}

TransportActivity 的主要活动有:

Button webServiceButton = (Button)this.findViewById(R.id.webServiceButton);
        webServiceButton.setOnClickListener(new android.view.View.OnClickListener() 
        {
            public void onClick(View view) {
            Intent intent = new Intent( view.getContext(), WebServiceActivity.class);
            intent.putExtra("studlist", students.getText().toString());

            startActivity(intent);

        }
    });    

这是解决问题的 LogCat:

 05-01 21:37:31.267: E/AndroidRuntime(27758): FATAL EXCEPTION: main
 05-01 21:37:31.267: E/AndroidRuntime(27758): java.lang.RuntimeException: Unable to instantiate activity     ComponentInfo{com.harshit.studenttranstrack/com.harshit.studenttranstrack.WebServiceActivity}: java.lang.NullPointerException
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2229)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at android.app.ActivityThread.access$700(ActivityThread.java:165)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at android.os.Handler.dispatchMessage(Handler.java:99)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at android.os.Looper.loop(Looper.java:137)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at android.app.ActivityThread.main(ActivityThread.java:5455)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at java.lang.reflect.Method.invokeNative(Native Method)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at java.lang.reflect.Method.invoke(Method.java:525)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at dalvik.system.NativeStart.main(Native Method)
 05-01 21:37:31.267: E/AndroidRuntime(27758): Caused by: java.lang.NullPointerException
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at com.harshit.studenttranstrack.WebServiceActivity.<init>(WebServiceActivity.java:22)
 05-01 21:37:31.267: E/AndroidRuntime(27758):   at java.lang.Class.newInstanceImpl(Native Method)

【问题讨论】:

  • 您的网络服务活动中的第 22 行是什么??
  • 22 in WebServiceActivity?
  • @Lal 第 22 行:字符串 studlist = intent.getStringExtra("studlist");这里是3号线
  • 你是怎么写putExtra()???

标签: java android email android-intent android-activity


【解决方案1】:

您不能在 onCreate() 之前 getIntent() 。此时根本没有可用的 Intent。我相信任何需要上下文的东西都是如此。

onCreate()方法中设置这些

String studlist = this.getIntent().getStringExtra("studlist");

【讨论】:

  • 那么我会在emailIntent.putExtra(Intent.EXTRA_TEXT, studlist); 中收到错误,因为 studlist 将不再是全局的...
【解决方案2】:

onCreate() 方法中这样尝试。

Intent intent = this.getIntent(); //in the WebServiceActivity activity
String studlist = (String) intent .getStringExtra("studlist");

【讨论】:

  • 无需转换为String,因为结果将是String值。
  • onCreate()之外声明studlist并仅在onCreate()内部初始化它
  • LogCat : 05-01 22:28:03.273: E/AndroidRuntime(31734): FATAL EXCEPTION: main 05-01 22:28:03.273: E/AndroidRuntime(31734): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.harshit.studenttranstrack/com.harshit.studenttranstrack.WebServiceActivity}: java.lang.NullPointerException 05-01 22:28:03.273: E/AndroidRuntime(31734): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) 05-01 22:28:03.273: E/AndroidRuntime(31734): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359)
  • 这与我的回答类似 na.. @vjdhama
猜你喜欢
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多