-1

Почему мое приложение падает во время запуска? Im сделаноAndroid - авария при запуске

Main_Activity

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import java.io.IOException; 
import java.net.InetAddress; 
import java.net.UnknownHostException; 


public class MainActivity extends AppCompatActivity 
    implements NavigationDrawerFragment.NavigationDrawerCallbacks { 

/** 
* Fragment managing the behaviors, interactions and presentation of the navigation drawer. 
*/ 
private NavigationDrawerFragment mNavigationDrawerFragment; 

/** 
* Used to store the last screen title. For use in {@link #restoreActionBar()}. 
*/ 
private CharSequence mTitle; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mNavigationDrawerFragment = (NavigationDrawerFragment) 
      getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 
    mTitle = getTitle(); 

    // Set up the drawer. 
    mNavigationDrawerFragment.setUp(
      R.id.navigation_drawer, 
      (DrawerLayout) findViewById(R.id.drawer_layout)); 





    //SERVER1 

    boolean reachable = false; 

    try { 
     reachable = InetAddress.getByName("www.google.com").isReachable(2000); 
    } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     TextView view = (TextView) findViewById(R.id.textView2); 
     view.setText("server down"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     TextView view = (TextView) findViewById(R.id.textView2); 
     view.setText("server down"); 
    } 

    if(reachable == true){ 
     TextView view = (TextView) findViewById(R.id.textView2); 
     view.setText("server works"); 
    } else{ 

    } 


    //SERVER2 
    boolean reachable2 = false; 


    try { 
     reachable2 = InetAddress.getByName("www.wikipedia.com").isReachable(2000); 
    } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     TextView view = (TextView) findViewById(R.id.textView3); 
     view.setText("server down"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     TextView view = (TextView) findViewById(R.id.textView3); 
     view.setText("server down"); 
    } 

    if(reachable2 == true){ 
     TextView view = (TextView) findViewById(R.id.textView3); 
     view.setText("server works"); 
    } else{ 

    } 


} 

@Override 
public void onNavigationDrawerItemSelected(int position) { 

    Fragment myFragment = null; 

    switch (position) { 

     case 0: 
      myFragment = new First_Fragment(); 
      break; 

     case 1: 
      myFragment = new Second_Fragment(); 
      break; 

     case 2: 
      myFragment = new Third_Fragment(); 
      break; 
    } 
    // update the main content by replacing fragments 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction() 
      .replace(R.id.container, myFragment) 
      .commit(); 
} 

public void onSectionAttached(int number) { 
    switch (number) { 
     case 1: 
      mTitle = getString(R.string.title_section1); 
      break; 
     case 2: 
      mTitle = getString(R.string.title_section2); 
      break; 
     case 3: 
      mTitle = getString(R.string.title_section3); 
      break; 
    } 
} 

public void restoreActionBar() { 
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayShowTitleEnabled(true); 
    actionBar.setTitle(mTitle); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (!mNavigationDrawerFragment.isDrawerOpen()) { 
     // Only show items in the action bar relevant to this screen 
     // if the drawer is not showing. Otherwise, let the drawer 
     // decide what to show in the action bar. 
     getMenuInflater().inflate(R.menu.main, menu); 
     restoreActionBar(); 
     return true; 
    } 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 
    /** 
    * The fragment argument representing the section number for this 
    * fragment. 
    */ 
    private static final String ARG_SECTION_NUMBER = "section_number"; 

    /** 
    * Returns a new instance of this fragment for the given section 
    * number. 
    */ 
    public static PlaceholderFragment newInstance(int sectionNumber) { 
     PlaceholderFragment fragment = new PlaceholderFragment(); 
     Bundle args = new Bundle(); 
     args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
     return rootView; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     ((MainActivity) activity).onSectionAttached(
       getArguments().getInt(ARG_SECTION_NUMBER)); 
    } 
} 

} 

first_layout

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Large Text" 
    android:id="@+id/textView2" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="107dp" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Large Text" 
    android:id="@+id/textView3" 
    android:layout_centerVertical="true" 
    android:layout_alignLeft="@+id/textView2" 
    android:layout_alignStart="@+id/textView2" /> 

</RelativeLayout> 

First_Fragment и Second_Fragment и Third_Fragment

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 



public class First_Fragment extends Fragment { 

View myView; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    myView = inflater.inflate(R.layout.first_layout, container, false); 
    return myView; 
} 

} 

Он падает каждый раз при запуске. Я потерял 2 часа игры в Google и chcying мой код. Любое решение? Мне жаль, если его ошибка noob, я новичок. Спасибо!

Manifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="test.testapp"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 

</manifest> 

LogCat

http://pastebin.com/f1vwCTST - LogCat здесь

+0

Пожалуйста, разместите свой стек. –

+0

Вы обнаружите какое-либо исключение в своем логарифме? – Jens

+1

Вам не нужно искать код - если вы посмотрите на [logcat] (http://developer.android.com/tools/help/logcat.html), он скажет вам, где ваш код не работает. Если вы не понимаете выход, отправьте его здесь, и кто-то поможет вам. – adelphus

ответ

-2

Пользователь не добавлял любой StackTrace, но из моего собственного опыта, я могу сказать, что он должен перед лицом Исключение нулевого указателя в

((MainActivity) activity).onSectionAttached(getArguments().getInt(ARG_SECTION_NUMBER));

Это происходит потому, что getArguments является недействительным. Вопрос, который задал вопрос, должен приложить stackTrace, поскольку это укрепило бы мое требование. Больше опыта человек должен изучить его или объяснить это поведение.

Пожалуйста, измените фрагмент кода С:

public static PlaceholderFragment newInstance(int sectionNumber) { 
    PlaceholderFragment fragment = new PlaceholderFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
    fragment.setArguments(args); 
    return fragment; 
} 

Для

public static PlaceholderFragment newInstance(int sectionNumber) { 

    Bundle args = new Bundle(); 
    args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
    PlaceholderFragment fragment = new PlaceholderFragment(); 
    fragment.setArguments(args); 
    return fragment; 
} 

Вы можете обратиться по этой ссылке для получения дополнительной информации: Android Fragment

Important Важно Любой, кто downvoted этот ответ проверьте приведенную выше ссылку или прочитайте ответ ниже ,

Я отправляю мой ответ от этой ссылке

Добавление к ответу ρяσѕρєя K. При настройке аргумента необходимо поддерживать последовательность выполнения операторов. Например, в последовательности ответа является:

Bundle bundle = new Bundle(); 
bundle.putString("edttext", "From Activity"); 
// set Fragmentclass Arguments 
Fragmentclass fragobj = new Fragmentclass(); 
fragobj.setArguments(bundle); 

Но если попытаться выделить фрагмент первым, а затем выделить объект Bundle и попытаться установить его в качестве аргумента для выделенного фрагмента, то где-то может быть принято в качестве нуля в onCreateView метод внутри фрагмента. Например, используя нижеприведенный сегмент кода, иногда getArguments внутри onCreateView могут возвращать значение null.

Ошибка склонный сегмент код:

Fragmentclass fragobj = new Fragmentclass(); 
Bundle bundle = new Bundle(); 
bundle.putString("edttext", "From Activity"); 
// set Fragmentclass Arguments 
fragobj.setArguments(bundle); 

Я столкнулся с той же проблемой в течение некоторого времени, но когда я включил порядок отчетности моей проблема была решена. Было бы здорово, если бы кто-то мог дать твердую причину такого поведения. Скорее всего, это зависит от времени выполнения. Более опытный человек должен объяснить причину этого.

+0

Какая разница? @sahu – Emil

+0

Это тот же код, ничего не изменилось. –

+0

Да, вы можете подумать, что это то же самое. Но на самом деле это не так. Я поделился ссылкой вместе с кодом. Позвольте ему сначала проверить это, а затем проголосовать. Проверьте эту ссылку. Поведение наблюдается, потому что перед установкой аргумента в пакете для фрагмента фрагмент получает инициализацию и получает нуль в качестве связки. Я столкнулся с этой ошибкой несколько раз – sahu

Смежные вопросы