gpt4 book ai didi

java - 如果在 Java/Android Studio 中选中相应的复选框,则将多个 TextView 传输到 "compose email"

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:08 25 4
gpt4 key购买 nike

编辑:我无法发表评论,尽管这是我自己的问题。所以我要在这里发表我的评论。我多次检查了我的复选框及其 ID,一切似乎都很好。尝试过重命名以及我能想到的任何东西。仍然没有解决。您知道还有什么可能导致该错误吗?

原帖:我已经尝试解决这个问题几个小时了,希望得到一些帮助。我对编码非常陌生 - 参加在线类(class),这是我的期末项目。

我为此 Activity 创建了 7 个 XML 布局。我使用按钮从布局 1 切换到布局 2 等,并且该部分有效。我在 5 个 XML 布局中添加了多个复选框。单击“提交”按钮时,每个选中的复选框上方的文本应该填充到电子邮件应用程序的“撰写电子邮件”中。当我尝试运行它时,它会一直工作,直到我按下最后一个按钮 - 那就是应用程序崩溃的时候。

package com.example.android.theultimatebakingsodaguide;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;

import android.content.Intent;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

}

public void healthPage(View view) {
// TODO: Find a reference to the ImageView in the layout. Change the image.

ScrollView scrollHealthPage = (ScrollView)findViewById(R.id.scroll_health_page);
setContentView(R.layout.health_page);

}

public void beautyPage(View view) {
// TODO: Find a reference to the ImageView in the layout. Change the image.

ScrollView scrollBeautyPage = (ScrollView)findViewById(R.id.scroll_beauty_page);
setContentView(R.layout.beauty_page);

}

public void personalCarePage(View view) {
// TODO: Find a reference to the ImageView in the layout. Change the image.

ScrollView scrollPersonalCarePage = (ScrollView)findViewById(R.id.scroll_personal_care_page);
setContentView(R.layout.personal_care_page);

}
public void cleaningPage(View view) {
// TODO: Find a reference to the ImageView in the layout. Change the image.

ScrollView scrollCleaningPage = (ScrollView)findViewById(R.id.scroll_cleaning_page);
setContentView(R.layout.cleaning_page);

}
public void deodorizingPage(View view) {
// TODO: Find a reference to the ImageView in the layout. Change the image.

ScrollView scrollDeodorizingPage = (ScrollView)findViewById(R.id.scroll_deodorizing_page);
setContentView(R.layout.deodorizing_page);

}
public void favoritesPage(View view) {

LinearLayout scrollDeodorizingPage = (LinearLayout)findViewById(R.id.favorites_linear);
setContentView(R.layout.favorite_tips);

}

public void emailFavorites(View view) {
CheckBox healthFav01 = (CheckBox) findViewById(R.id.health_fav_01);
boolean pickHealthFav01 = healthFav01.isChecked();

CheckBox healthFav02 = (CheckBox) findViewById(R.id.health_fav_02);
boolean pickHealthFav02 = healthFav02.isChecked();


EditText emailText = (EditText) findViewById(R.id.my_email);
String userEmail = emailText.getText().toString();

String tipSummary = favoriteTipsSummary(pickHealthFav01, pickHealthFav02);

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_SUBJECT, "Your favorite baking soda tips");
intent.putExtra(Intent.EXTRA_TEXT, "The baking soda tips you selected are here!" + tipSummary);
intent.putExtra(Intent.EXTRA_EMAIL, userEmail);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}


private String favoriteTipsSummary(boolean pickHealthFav01, boolean pickHealthFav02) {
String tipSummary = "We hope those are helpful!";
TextView healthTip01 = (TextView) findViewById(R.id.health_tip_01);
String sHealthTip01 = healthTip01.getText().toString();
if (pickHealthFav01) {tipSummary += sHealthTip01;}
TextView healthTip02 = (TextView) findViewById(R.id.health_tip_02);
String sHealthTip02 = healthTip02.getText().toString();
if (pickHealthFav02) {tipSummary += sHealthTip02;}
return tipSummary;
}

}

我已为每个复选框及其相应的 TextView 分配了 ID。我尝试仅为前两个复选框编写代码来测试它是否有效。当我弄清楚后,我会对其余的人做同样的事情(我有很多)。我知道这对于我目前的水平来说太复杂了,但我正在尝试挑战自己并边做边学。请帮忙!提前致谢!

附注以下是我收到的错误消息(请向右滚动)。我在代码中找不到错误。

FATAL EXCEPTION: main
Process: com.example.android.theultimatebakingsodaguide, PID: 23472
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:275)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)
at android.view.View.performClick(View.java:5204) 
at android.view.View$PerformClick.run(View.java:21153) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.CheckBox.isChecked()' on a null object reference
at com.example.android.theultimatebakingsodaguide.MainActivity.emailFavorites(MainActivity.java:76)
at java.lang.reflect.Method.invoke(Native Method) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270) 
at android.view.View.performClick(View.java:5204) 
at android.view.View$PerformClick.run(View.java:21153) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

最佳答案

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.CheckBox.isChecked()' on a null

object reference at com.example.android.theultimatebakingsodaguide.MainActivity.emailFavorites(MainActivity.java:76)

boolean pickHealthFav01 = healthFav01.isChecked(); 是错误发生的地方。检查该复选框是否位于您所引用的 Activity 内。另请检查您是否引用了正确的 ID。

或者尝试类似的东西,

if (healthFav01.isChecked() != null){
//do the assignments
}

但这不是最佳实践。如果您有任何问题,请告诉我

关于java - 如果在 Java/Android Studio 中选中相应的复选框,则将多个 TextView 传输到 "compose email",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35910214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com