2016-01-26 2 views
-1

У меня есть recyclerview, который при нажатии идет к их соответствующим действиям. Я передал их позицию, связывая их с помощью пакета, а затем положил его в намерение. Я возвращаю данные из соответствующих классов. Каждый из этих действий есть viewpager в нем. Поэтому я помещаю эту позицию в объект ImagePagerAdapter, созданный в действиях. Изображения прекрасно загружаются в viewpager.I есть кнопка в этих действиях, которая идет на другую активность, и когда я пытаюсь перейти к активность, но приложение craashes.Here является ошибка, которая появляется: ошибка:Андроид пучок становится 0

01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sabudaniel61.ktdc/com.example.sabudaniel61.ktdc.NandFragment}: java.lang.NullPointerException 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2252) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread.access$700(ActivityThread.java:153) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:176) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5302) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:511) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime: Caused by: java.lang.NullPointerException 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at com.example.sabudaniel61.ktdc.NandFragment.onCreate(NandFragment.java:66) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.Activity.performCreate(Activity.java:5326) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215) 
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread.access$700(ActivityThread.java:153)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:99)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:176)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5302)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:511)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)  
01-27 03:40:40.220 5043-5043/com.example.sabudaniel61.ktdc E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method)  

RecyclerAdapter.java :

itemLayoutView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      position = getAdapterPosition(); 
      switch(position) { 
       case 0: 
        Intent intent = new Intent(context, AranyaFragment.class); 
        Bundle a = new Bundle(); 
        a.putInt("Aranya", position); 
        intent.putExtras(a); 
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent); 
        break; 
       case 1: 
        Intent intent1 = new Intent(context, BolgattyFragment.class); 
        Bundle b = new Bundle(); 
        b.putInt("Bolg", position); 
        intent1.putExtras(b); 
        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent1); 
        break; 
       case 2: 
        Intent intent2 = new Intent(context, MascotFragment.class); 
        intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        Bundle c = new Bundle(); 
        c.putInt("Mas", position); 
        intent2.putExtras(c); 
        context.startActivity(intent2); 
        break; 
       case 3: 
        Intent intent3 = new Intent(context, WaterScapes.class); 
        Bundle d = new Bundle(); 
        d.putInt("Water", position); 
        intent3.putExtras(d); 
        intent3.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent3); 
        break; 
       case 4: 
        Intent intent4 = new Intent(context, SamudraFragment.class); 
        Bundle e = new Bundle(); 
        e.putInt("Samudra", position); 
        intent4.putExtras(e); 
        intent4.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent4); 
        break; 
       case 5: 
        Intent intent5 = new Intent(context, GoldenFragment.class); 
        Bundle f = new Bundle(); 
        f.putInt("Gold", position); 
        intent5.putExtras(f); 

        intent5.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent5); 
        break; 
       case 6: 
        Intent intent6 = new Intent(context, RainFragment.class); 
        Bundle g = new Bundle(); 
        g.putInt("Rain", position); 
        intent6.putExtras(g); 
        intent6.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent6); 
        break; 
       case 7: 
        Intent intent7 = new Intent(context, PeriyarFragment.class); 
        Bundle h = new Bundle(); 
        h.putInt("Periyar", position); 
        intent7.putExtras(h); 
        intent7.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent7); 
        break; 
       case 8: 
        Intent intent8 = new Intent(context, PepperFragment.class); 
        Bundle i = new Bundle(); 
        i.putInt("Pepper", position); 
        intent8.putExtras(i); 
        intent8.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent8); 
        break; 
       case 9: 
        Intent intent9 = new Intent(context, NandFragment.class); 
        Bundle j = new Bundle(); 
        j.putInt("Nand", position); 
        intent9.putExtras(j); 
        intent9.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent9); 
        break; 
       case 10: 
        Intent intent10 = new Intent(context, TamarFragment.class); 
        Bundle k = new Bundle(); 
        k.putInt("Tamar", position); 
        intent10.putExtras(k); 
        intent10.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        context.startActivity(intent10); 
        break; 
      } 
     } 
    }); 
} 

NandFragment.java (на самом деле не frament): В приведенном ниже коде я получить позицию с помощью

Bundle b=getIntent().getExtras(); 
pos= b.getInt("Nand"); 

Кнопка переходит на другой вид деятельности, и когда я пытаюсь вернуться обратно сбои приложения. ошибка при

pos= b.getInt("Nand"); 

public class NandFragment extends AppCompatActivity implements OnMapReadyCallback { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.nandanamlayout); 
     Bundle b=getIntent().getExtras(); 
     pos= b.getInt("Nand"); 
     Button button1; 
     button1=(Button) findViewById(R.id.nrrooms); 
     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(getApplicationContext(), NandRooms.class); 
       startActivity(intent); 
      } 
     }); 
ViewPager viewPager = (ViewPager) findViewById(R.id.vpfragment9); 

     ImagePagerAdapter pagerAdapter=new ImagePagerAdapter(this,pos); 
     viewPager.setAdapter(pagerAdapter); 
     viewPager.setPageTransformer(true, new ParallaxPageTransformer());}} 

NandRooms.java:

public class NandRooms extends AppCompatActivity { 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.rooms); 
    Toolbar toolbar=(Toolbar) findViewById(R.id.rooms); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("Rooms"); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true);}} 

Если вы не поняли его, пожалуйста, скажите мне ...

+0

Формат первой части вашего вопроса. Это невозможно прочитать. – Sharj

+0

Отредактировано, пожалуйста, изучите его – jobin

+0

.... вам нужно опубликовать свой метод 'onOptionsItemSelected', где вы ** фактически ** обрабатываете навигацию UP. -_- – EpicPandaForce

ответ

1

Ваша проблема заключается в том, что, когда вы нажмете на кнопку, вы не посылают никаких дополнительных услуг, как при первом переходите к NandFragment деятельности. Поэтому, когда вы вернетесь к Activity с помощью кнопки Up, getIntent().getExtras() вернет null, так как нет добавленных дополнений. Способ справиться с этим состоит в том, чтобы переопределить кнопку «Действие», а затем обработать «обратную навигацию» самостоятельно, вставив ваши дополнительные функции по пути. Для этого вам нужно переопределить onOptionsItemSelected() и найти действие android.R.id.home. Тогда вы сделаете что-то вроде этого:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    switch(id) { 
     case android.R.id.home: 
      Intent upIntent = new Intent(this, NandFragment.class); 
      //put in your extras here... 
      startActivity(upIntent); 

      //return true to let the OS know you handled this action yourself 
      return true; 
    } 
    return false; 
} 
+0

Что заставляет вас думать, что он использует навигацию UP? – EpicPandaForce

+0

@EpicPandaForce - потому что в своем оригинальном посте он упомянул, что нажал кнопку «назад» на панели инструментов, которая является кнопкой «вверх». Похоже, теперь он отредактировал эту часть. – NoChinDeluxe

+0

Теперь я редактирую вопрос. Я отправлю действие, из которого я обрабатываю кнопку вверх. – jobin

0

Прежде чем вы получите дополнительную ценность, всегда проверяйте, есть ли у вас это в противном случае, если оно не существует, вы получите ошибку.

if (getIntent().hasExtra("Nand")) { 
     Bundle b=getIntent().getExtras(); 
     pos= b.getInt("Nand"); 
    } 
    else{ 
     Log.d("TAG", "Bundle is not set"); 
    } 
Смежные вопросы