-1

MainActivity、ShopActivity、BillActivity という名前の 3 つのアクティビティがあります。MainActivity には、次のアクティビティ、つまり ShopActivity に移動するためのラジオ ボタンと Button のコードが含まれています。しかし、アプリを実行すると、MainActivity が開き、ラジオ ボタンを選択した後にボタンをクリックすると、ShopActivity を開く必要がありますが、アプリが予期せず終了します。何をすべきか?

主な活動

package com.example.shopcart;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;


public class MainActivity extends Activity {

Button btnshop;
RadioGroup rg;
RadioButton rb;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnshop = (Button)findViewById(R.id.button1);
    rg = (RadioGroup)findViewById(R.id.rgoffer);

    btnshop.setOnClickListener( new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            int selectedid = rg.getCheckedRadioButtonId();
            rb = (RadioButton)findViewById(selectedid);
            Intent intent = new Intent(getApplicationContext(), ShopActivity.class);
            //intent.putExtra("key", rb.getText().toString());
            startActivity(intent);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

ShopActivity これには、3 番目のアクティビティ、つまり BillActivity に進むためのチェックボックスとボタンが含まれています。

package com.example.shopcart;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;

public class ShopActivity extends Activity {

long amt;
CheckBox chs4, chs3, chz10, chone,chapple;
Button btnsub;
String str;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shop);
    str = getIntent().getExtras().getString("key");
    btnsub.setOnClickListener( new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(chs4.isChecked()){
                amt = amt+38000;
            }
            else if(chs3.isChecked()){
                amt = amt+29000;
            }
            else if(chz10.isChecked()){
                amt = amt+40500;
            }
            else if(chone.isChecked()){
                amt = amt+42500;
            }
            else if(chapple.isChecked()){
                amt = amt+39000;
            }
            Intent intent1 = new Intent(ShopActivity.this,BillActivity.class);
            intent1.putExtra("key1", str);
            intent1.putExtra("key2", amt);
            startActivity(intent1);
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.shop, menu);
    return true;
}

}

BillActivity ここで、すべてのデータがインテントから取得され、TextViews に表示されます。

package com.example.shopcart;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class BillActivity extends Activity {

TextView t1,t2,t3,t4;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_bill);
    t2.setText("Your Discount Value : "+getIntent().getExtras().getString("key1"));
    t4.setText("You Have to pay : "+getIntent().getExtras().getString("key2"));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.bill, menu);
    return true;
}

}

これは logcat の出力です。

06-17 19:11:27.942: D/AndroidRuntime(332): Shutting down VM
06-17 19:11:27.942: W/dalvikvm(332): threadid=1: thread exiting with uncaught exception (group=0x40015560)
06-17 19:11:27.982: E/AndroidRuntime(332): FATAL EXCEPTION: main
06-17 19:11:27.982: E/AndroidRuntime(332): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.shopcart/com.example.shopcart.ShopActivity}: java.lang.NullPointerException
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.os.Looper.loop(Looper.java:123)
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.app.ActivityThread.main(ActivityThread.java:3683)
06-17 19:11:27.982: E/AndroidRuntime(332):  at java.lang.reflect.Method.invokeNative(Native Method)
06-17 19:11:27.982: E/AndroidRuntime(332):  at java.lang.reflect.Method.invoke(Method.java:507)
06-17 19:11:27.982: E/AndroidRuntime(332):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-17 19:11:27.982: E/AndroidRuntime(332):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-17 19:11:27.982: E/AndroidRuntime(332):  at dalvik.system.NativeStart.main(Native Method)
06-17 19:11:27.982: E/AndroidRuntime(332): Caused by: java.lang.NullPointerException
06-17 19:11:27.982: E/AndroidRuntime(332):  at com.example.shopcart.ShopActivity.onCreate(ShopActivity.java:23)
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-17 19:11:27.982: E/AndroidRuntime(332):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-17 19:11:27.982: E/AndroidRuntime(332):  ... 11 more
4

2 に答える 2

3

初期化せずShopActivityにアクセスしているbtnsub

btnsub = (Button)findViewById(..);
于 2013-06-14T10:50:52.500 に答える