2017-01-20 19 views
0

我从父级CouponsActivity中的片段foodCouponsFragment打开IndividualCouponsActivity。用意向打开IndividualCouponsActivity。打开后,我想编辑IndividualCouponActivity的textViews和ImageViews。应该指出的是,IndividualCouponActivity不是该片段的父代。如何编辑由同一片段打开的片段打开的活动中的值

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 

       Coupon coupon = foodCoupons.get(position); 

       Intent foodCouponsIntent = new Intent(getActivity(), IndividualCouponActivity.class); 
       startActivity(foodCouponsIntent); 

       IndividualCouponActivity activity = new IndividualCouponActivity(); 

       activity.setValue(coupon.getCouponValue()); 

       activity.setCompany(coupon.getCompanyName()); 

       activity.setInfo(coupon.getDescription()); 

       activity.setPts(coupon.getPts()); 

       activity.setQr(coupon.getPicImageResourceId()); 

     } 
    });  

但是,当我运行该应用程序时,单击listView使应用程序关闭。这是该日志当时说:

FATAL EXCEPTION: main 
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference at android.support.v7.app.AppCompatDelegateImplBase. 

我怀疑这是从我使用新IndividualCouponActivity活动的访问类的方法生根。谢谢!

回答

0

不要用新创建的活动......

传递优惠券对象到你的活动是这样的:

Intent intent = new Intent(); 
Bundle bundle = new Bundle(); 
bundle.putParcelable("coupon", coupon); // or putSerializable() 
intent.putExtras(bundle); 
intent.setClass(context, IndividualCouponActivity.class); 
context.startActivity(intent); 

在你的活动中onCreate()你可以得到优惠券通过用:

getIntent().getExtras().getParcelable("coupon"); // or putSerializable() 

然后将值设置为您的视图。

0
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 

      Coupon coupon = (Coupon) adapterView.getItemAtPosition(position); 

      Intent foodCouponsIntent = new Intent(getActivity(), IndividualCouponActivity.class); 

      Bundle extras = new Bundle(); 
      extras.put("value", coupon.getCouponValue()); 
      extras.put("companyName", coupon.getCompanyName()); 
      extras.put("description",coupon.getDescription()); 
      extras.put("pts", coupon.getPts()); 
      extras.put("picImageResourceId", coupon.picImageResourceId()); 

      foodCouponsIntent.putExtras(extras); 


      startActivity(foodCouponsIntent); 

    } 
}); 

,然后在IndividualCouponActivity的onCreate:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //get reference to views... 
     textViewValue = (TextView) findViewById(R.id.textViewValue); 

     //do this for all views.... 


     //if all objects are String values, if not you know what you have to do... 
     //here you get values from extras 

     Bundle data = getIntent().getExtras(); 
     String value = data.getStringExtra("value"); 
     String companyName = data.getStringExtra("companyName"); 
     String description = data.getStringExtra("description"); 
     String pts = data.getStringExtra("pts"); 
     String picImageResourceId = data.getStringExtra("picImageResourceId"); 


     //here update UI views 
     //example 

     textViewValue.setText(value); 

     //do this for all views.... 
} 

也许有一些错字的错误,但是这是解决方案...

0

可以使用通过这两个活动之间的数据“putExtra “

Intent intent = new Intent(getBaseContext(), IndividualCouponActivity.class); 
intent.putExtra("COUPON_COMPANY_NAME", coupon.getCompanyName()); 
startActivity(intent);