2017-01-20 2 views
0

Ich öffne die IndividualCouponsActivity aus dem Fragment foodCouponsFragment innerhalb der übergeordneten CouponsActivity. Ich öffne die IndividualCouponsActivity mit einer Absicht. Nach dem Öffnen möchte ich die textViews und ImageViews von IndividualCouponActivity bearbeiten. Es sollte beachtet werden, dass die IndividualCouponActivity kein Elternteil des Fragments ist.So bearbeiten Sie die Werte in einer Aktivität, die von einem Fragment aus demselben Fragment geöffnet wurde, nachdem es geöffnet wurde

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()); 

     } 
    });  

Wenn ich jedoch die App starte, wird durch Klicken auf den Listenbildschirm die App heruntergefahren. Dies ist, was das Protokoll zu dieser Zeit sagt:

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. 

Ich vermute, dass dies aus meiner Nutzung der neuen IndividualCouponActivity Aktivität Verwurzelung die Klassenmethoden zugreifen. Vielen Dank!

Antwort

0

Sie Ihre Aktivitäten nicht mit neuem erstellen ...

das Objekt so zu Ihrer Tätigkeit Coupon Pass:

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); 

In Ihrer Tätigkeit in onCreate() Sie mit dem übergebenen Coupon erhalten können:

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

Dann legen Sie die Werte auf Ihre Ansichten.

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); 

    } 
}); 

und dann in onCreate Ihre IndividualCouponActivity suchen:

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.... 
} 

vielleicht gibt es einige Tippfehler Fehler, aber das ist die Lösung ...

0

Sie können Daten zwischen den beiden Aktivitäten passieren mit „putExtra "

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