SetOnClickListener का उपयोग करके एक गतिविधि से दूसरे गतिविधि में ListView डेटा कैसे प्राप्त करें

मेरी सूची में फील्ड, वार्ड नंबर और डेट हैं। मैं इन आंकड़ों को नई गतिविधि में प्राप्त करना चाहता हूं जब मैं एक सूचीदृश्य पर क्लिक कर रहा हूं। लेकिन इसमें एक रनटाइम त्रुटि है और मुझे यह पता नहीं है कि इसे कैसे ठीक किया जाए।

यह मेरी डैशबोर्डActivity.java फ़ाइल है,

public class DashboardActivity extends ListActivity implements FetchDataListener{

    UserFunctions userFunctions;
    Button btnLogout;
    TextView resultView;
    private ProgressDialog dialog;
    //private String email;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    /**
     * Dashboard Screen for the application
     * */        
   //Check login status in database
    userFunctions = new UserFunctions();
    if(userFunctions.isUserLoggedIn(getApplicationContext())){
        setContentView(R.layout.dashboard);

        initView();   

         ListView lv = getListView();

         //listening to single list item on click
          lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

               //selected item
              TextView txtviewWard= (TextView) view.findViewById(R.id.ward_number);
              String ward = txtviewWard.getText().toString();

              TextView txtviewDate= (TextView) view.findViewById(R.id.date_time);
              String dateTime = txtviewDate.getText().toString(); 

               //Launching new Activity on selecting single List Item
                Intent i = new Intent(getApplicationContext(), SingleListItem.class);
               //sending data to new activity
                i.putExtra("ward", ward);
                i.putExtra("dateTime", dateTime);
                startActivity(i);

            }
          });

        btnLogout = (Button) findViewById(R.id.btnLogout);

        btnLogout.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
               //TODO Auto-generated method stub
                userFunctions.logoutUser(getApplicationContext());
                Intent login = new Intent(getApplicationContext(), LoginActivity.class);
                login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(login);
               //Closing dashboard screen
                finish();
            }
        });

    }else{
       //user is not logged in show login screen
        Intent login = new Intent(getApplicationContext(), LoginActivity.class);
        login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(login);
       //Closing dashboard screen
        finish();
        }
    }

private void initView() {
   //show progress dialog
    dialog = ProgressDialog.show(this, "", "Loading...");

    Intent intent = getIntent();
    String email = intent.getStringExtra(LoginActivity.EMAIL);


    String url = "http://pubbapp.comze.com/pubapp1.php?email=" + email;
    FetchDataTask task = new FetchDataTask(this);
    task.execute(url);


}


public void onFetchComplete(List data) {
   //dismiss the progress dialog
    if(dialog != null)  dialog.dismiss();
   //create new adapter
    ApplicationAdapter adapter = new ApplicationAdapter(this, data);
   //set the adapter to list
    setListAdapter(adapter);        
}


public void onFetchFailure(String msg) {
   //dismiss the progress dialog
    if(dialog != null)  dialog.dismiss();
   //show failure message
    Toast.makeText(this, msg, Toast.LENGTH_LONG).show();        
}

}

यह मेरी सिंगललिस्ट Item.java फ़ाइल है,

public class SingleListItem extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.single_list_item_view);

    TextView txtWard = (TextView) findViewById(R.id.ward_number);
    TextView txtDate = (TextView) findViewById(R.id.date_time);

    Intent i = getIntent();
   //getting attached intent data
    String wardNumber = i.getStringExtra("ward");
    String dateTime = i.getStringExtra("dateTime");
   //displaying selected product name
    txtWard.setText(wardNumber);
    txtDate.setText(dateTime);

}

यह मेरी एक्सएमएल फाइल है,

<?xml version="1.0" encoding="utf-8"?>







और यह LogCat में त्रुटि है,

12-02 19:10:01.100: E/AndroidRuntime(22705): FATAL EXCEPTION: main
12-02 19:10:01.100: E/AndroidRuntime(22705): java.lang.NullPointerException
12-02 19:10:01.100: E/AndroidRuntime(22705):    at com.example.androidhive.DashboardActivity$1.onItemClick(DashboardActivity.java:59)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at android.widget.ListView.performItemClick(ListView.java:3745)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1980)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at android.os.Handler.handleCallback(Handler.java:587)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at android.os.Handler.dispatchMessage(Handler.java:92)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at android.os.Looper.loop(Looper.java:130)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at android.app.ActivityThread.main(ActivityThread.java:3691)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at java.lang.reflect.Method.invokeNative(Native Method)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at java.lang.reflect.Method.invoke(Method.java:507)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
12-02 19:10:01.100: E/AndroidRuntime(22705):    at dalvik.system.NativeStart.main(Native Method)

कृपया इस त्रुटि को ठीक करने में मेरी मदद करें। धन्यवाद।

0
मैंने कोड के माध्यम से नहीं पढ़ा था, लेकिन बस एक इरादा का उपयोग करने के बारे में क्या?
जोड़ा लेखक Adam Arold, स्रोत
इसे कैसे ठीक करें : स्टैकट्रैक पढ़ें। संकेत रेखा की जांच करें। आश्चर्य है कि यह विशिष्ट लाइन इस अपवाद पर क्यों होती है।
जोड़ा लेखक njzk2, स्रोत

3 उत्तर

पहली गतिविधि में, putExtras :

// sending data to new activity
Bundle b = new Bundle();
b.putString("ward", ward);
b.putString("dateTime", dateTime);
i.putExtras(b);   

दूसरी गतिविधि में, बंडल को पुनर्प्राप्त करें और निम्नानुसार डेटा पार्स करें:

Bundle b = getIntent().getExtras();
if (b != null) 
{
    String wardNumber = b.getString("ward");
    String dateTime = b.getString("dateTime");
}
0
जोड़ा
आपके उत्तर के लिए धन्यवाद। मैंने आपके जैसा उल्लेख किया है। लेकिन फिर भी वही त्रुटि है।
जोड़ा लेखक user2881604, स्रोत
जवाब संपादित करें, कृपया जांचें
जोड़ा लेखक Infinite Recursion, स्रोत

इस तरह की दूसरी गतिविधि में डेटा प्राप्त करें:

Bundle b = savedInstanceState.getExtras();
    if(b!=null)
    {
        String ward =b.getString("ward");
        String dateTime =b.getString("datetime");

    }

बंडल getexras() के लिए ज़िम्मेदार है, इसलिए इसका उपयोग करें। यह मेरे और मेरे अन्य दोस्तों के लिए काम करता है।

0
जोड़ा

इसे इस्तेमाल करे....

   ListView lv = getListView();

 //listening to single list item on click
  lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {

       //your code

    }
  });
0
जोड़ा
जैसा आपने बताया है मैंने इसे बदल दिया, लेकिन यह मेरे लिए काम नहीं करता था
जोड़ा लेखक user2881604, स्रोत
आपके कोड में नया क्या है?
जोड़ा लेखक Gopal Gopi, स्रोत
आपने नया OnItemClickListener() का उपयोग किया है और मेरा नया एडाप्टर व्यू है। ओएनआईटीमक्लिक लिस्टनर() .. इसे आज़माएं..यह निश्चित रूप से काम करेगा
जोड़ा लेखक Dharani Kumar, स्रोत
@ user2881604 क्या आप AdapterView.OnItemClickListener() .. के अंदर डेटा लाने में सक्षम हो सकते हैं? लॉग ऑन करें और गतिविधि शुरू करने से पहले आपको एडेप्टर से मूल्य प्राप्त करने की जांच करें। फिर आप समस्या का पता लगाने में सक्षम हो सकते हैं
जोड़ा लेखक Dharani Kumar, स्रोत