gpt4 book ai didi

java - 在之前运行的代码中获取 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 17:16:41 26 4
gpt4 key购买 nike

我有一个代码可以检查 PNR 号码。由于网络问题,我想让用户通过短信检查 PNR。所以我添加了 2 个单选按钮,一个用于互联网,一个用于短信。但现在的问题是,当我单击 PNR 按钮时,它给出 nullPointer 异常。这是我的 Main Activity.java

public class MainActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private EditText pnrNumber;
private TextView errMsg;
private Button getPnr;
private Button pnrClear;
Button Yes, No;
RadioButton checkbyinternet, checkbysms;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

errMsg = (TextView) findViewById(R.id.errMsg);
pnrNumber = (EditText) findViewById(R.id.pnrNumber_p01);
getPnr = (Button) findViewById(R.id.checkPNRButton);
pnrClear = (Button) findViewById(R.id.pnrClear);

getPnr.setOnClickListener(this);
pnrClear.setOnClickListener(this);
}

public void onClick(View src) {
// Perform action on click

if (src.getId() == R.id.checkPNRButton)
{
if (checkbyinternet.isChecked())
{
int pnr2 = pnrNumber.getEditableText().length();
if (pnr2 != 10)
{
errMsg.setText("Length of PNR is Invalid.");

}
else
{

String pnr = pnrNumber.getEditableText().toString();

Bundle b = new Bundle();
b.putString("pnr", pnr);

System.out.println("Connectivity : "
+ this.isNetworkAvailable());

PNRStatus pnrStatus = null;
// Connect to the Server and Get the PNR status
try
{

String captcha = "37819";
String pnr1 = pnrNumber.getText().toString();

String reqStr = "lccp_pnrno1=" + pnr1
+ "&lccp_cap_val=" + captcha
+ "&lccp_capinp_val=" + captcha
+ "&submitpnr=Get+Status";
PNRStatusCheck check = new PNRStatusCheck();
StringBuffer data = check
.getPNRResponse(reqStr,
"http://www.indianrail.gov.in/cgi_bin/inet_pnstat_cgi_28688.cgi");
// String pnr1 = pnr; //"1154177041";
// String reqStr = "lccp_pnrno1=" + pnr1 +
// "&submitpnr=Get+Status";
// PNRStatusCheck check = new PNRStatusCheck();
// StringBuffer data = check.getPNRResponse(reqStr,
// "http://www.indianrail.gov.in/cgi_bin/inet_pnrstat_cgi.cgi");
if (data != null)
{
pnrStatus = check.parseHtml(data);
b.putSerializable("pnrStatus", pnrStatus);
}
else
{
// error
}
}
catch (Exception e)
{
e.printStackTrace();
}

Intent to = null;
if (pnrStatus != null)
{
to = new Intent(this, PNRStatusActivity.class);
to.putExtras(b);
startActivity(to);
}
else
{
errMsg.setText("Error prcessing PNR. Please try again.");
}
}
}
else if (checkbysms.isChecked())
{
// Toast.makeText(this, "SMS", Toast.LENGTH_SHORT).show();
int pnr2 = pnrNumber.getEditableText().length();
if (pnr2 != 10)
{
errMsg.setText("Length of PNR is Invalid.");

}
else
{
openSMSWarningDialog(src);
}
}

}
else if (src.getId() == R.id.pnrClear)
{
errMsg.setText("");
pnrNumber.setText("");
}
}

public boolean isNetworkAvailable() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
// if no network is available networkInfo will be null, otherwise check
// if we are connected
if (networkInfo != null && networkInfo.isConnected()) {
return true;
}
return false;
}

public void openSMSWarningDialog(View view) {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.smsdialog);
dialog.setTitle("Are you sure to use SMS.?");
Yes = (Button) dialog.findViewById(R.id.yes);
No = (Button) dialog.findViewById(R.id.no);

Yes.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String PnrNum = pnrNumber.getText().toString();
String messageToSend = ("PNR " + PnrNum);
String number = "139";
SmsManager.getDefault().sendTextMessage(number, null,
messageToSend, null, null);
dialog.dismiss();
Toast.makeText(
getBaseContext(),
"Please check your inbox in sometime for your PNR Status",
Toast.LENGTH_LONG).show();
}
});

No.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dialog.show();
}
}

这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:background="@drawable/background"
android:gravity="center_horizontal"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:text="@string/title"
android:gravity="center_horizontal"
android:textColor="@android:color/black"
android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
android:id="@+id/errMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:textColor="@android:color/black"
android:text="10 Digits Mandatory" />

<EditText
android:id="@+id/pnrNumber_p01"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:paddingLeft="10dp"
android:background="@drawable/edittextellipsedbackground"
android:layout_marginTop="17dp"
android:layout_marginBottom="7dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:hint="@string/pnrTextView" >

<requestFocus />
</EditText>

<Button
android:id="@+id/checkPNRButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/bluebutton"
android:layout_marginTop="17dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:padding="10dp"
android:shadowColor="#000000"
android:shadowRadius="5.9"
android:text="@string/checkPNRButton"
android:textColor="#ffffff"
android:textSize="20sp" />

<Button
android:id="@+id/pnrClear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bluebutton"
android:layout_marginTop="7dp"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:padding="10dp"
android:shadowColor="#000000"
android:shadowRadius="5.9"
android:text="Clear"
android:textColor="#ffffff"
android:textSize="20sp" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:layout_marginTop="20dp"
android:background="@drawable/roundlayoutborder"
android:gravity="center"
android:paddingBottom="5dp" >

<RadioGroup
android:id="@+id/checkvia"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:orientation="vertical" >

<RadioButton
android:id="@+id/internet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:textColor="@android:color/black"
android:text="@string/CheckByInternet"
android:textAppearance="?android:attr/textAppearanceSmall" />

<RadioButton
android:id="@+id/sms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:text="@string/CheckBySMS"
android:textAppearance="?android:attr/textAppearanceSmall" />
</RadioGroup>
</LinearLayout>


</LinearLayout>

短信布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#9bafb0"
android:orientation="vertical" >

<TextView
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:textColor="#ff0000"
android:ems="27"
android:text="@string/CheckThroughSMSWarning" >
</TextView>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp" >

<Button
android:id="@+id/yes"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="2dp"
android:textColor="@android:color/white"
android:layout_weight="1"
android:background="@drawable/bluebutton"
android:text="Yes" />

<Button
android:id="@+id/no"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="5dp"
android:textColor="@android:color/white"
android:layout_weight="1"
android:background="@drawable/bluebutton"
android:text="No" />
</LinearLayout>

</LinearLayout>

这是我的日志:

02-06 13:54:22.810: E/AndroidRuntime(858): FATAL EXCEPTION: main
02-06 13:54:22.810: E/AndroidRuntime(858): java.lang.NullPointerException
02-06 13:54:22.810: E/AndroidRuntime(858): at akshat.jaiswal.indianrailways.MainActivity.onClick(MainActivity.java:50)
02-06 13:54:22.810: E/AndroidRuntime(858): at android.view.View.performClick(View.java:4084)
02-06 13:54:22.810: E/AndroidRuntime(858): at android.view.View$PerformClick.run(View.java:16966)
02-06 13:54:22.810: E/AndroidRuntime(858): at android.os.Handler.handleCallback(Handler.java:615)
02-06 13:54:22.810: E/AndroidRuntime(858): at android.os.Handler.dispatchMessage(Handler.java:92)
02-06 13:54:22.810: E/AndroidRuntime(858): at android.os.Looper.loop(Looper.java:137)
02-06 13:54:22.810: E/AndroidRuntime(858): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-06 13:54:22.810: E/AndroidRuntime(858): at java.lang.reflect.Method.invokeNative(Native Method)
02-06 13:54:22.810: E/AndroidRuntime(858): at java.lang.reflect.Method.invoke(Method.java:511)
02-06 13:54:22.810: E/AndroidRuntime(858): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-06 13:54:22.810: E/AndroidRuntime(858): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-06 13:54:22.810: E/AndroidRuntime(858): at dalvik.system.NativeStart.main(Native Method)

请帮忙,我无法找到任何解决方案。

最佳答案

您的 checkbyinternetcheckbysms 按钮未初始化,这就是为什么您在 if (checkbyinternet.isChecked) 时收到 NullPointerException ())onClick() 方法中执行。

if (src.getId() == R.id.checkPNRButton) // true if you pressed the getPnr button
{
if (checkbyinternet.isChecked()) // checkbyinternet is uninitialized yet, so it'll throw a NPE

您还需要在 onCreate() 方法中初始化它们。

checkbyinternet = (RadioButton) findViewById(R.id.internet);
checkbysms = (RadioButton) findViewById(R.id.sms);

关于java - 在之前运行的代码中获取 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21597477/

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