2016-03-11 4 views
0

Так им пытаются сделать мои кнопки открывать новые виды деятельности в пределах моих навигационными фрагментов ящика, но что-то сломалось в моем MainActivity.javaкнопка не будет открывать новую деятельность

мой MainActivity.java ....

package east.myapplication; 


    import android.support.design.widget.NavigationView; 
    import android.support.v4.widget.DrawerLayout; 
    import android.support.v7.app.ActionBarDrawerToggle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.support.v7.widget.Toolbar; 
    import android.view.MenuItem; 

    public class MainActivity extends AppCompatActivity { 
    DrawerLayout drawerLayout; 
    Toolbar toolbar; 
    ActionBarDrawerToggle actionBarDrawerToggle; 
    android.support.v4.app.FragmentTransaction fragmentTransaction; 
    NavigationView navigationView; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

    actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, 
      R.string.drawer_close); 

    drawerLayout.setDrawerListener((actionBarDrawerToggle)); 

    fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.add(R.id.main_container,new HomeFragment()); 
    fragmentTransaction.commit(); 
    getSupportActionBar().setTitle("Home Fragment..."); 
    navigationView = (NavigationView)findViewById(R.id.navigation_view); 
    navigationView.setNavigationItemSelectedListener(new  NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem item) { 
      switch (item.getItemId()) 
      { 
       case R.id.home_id: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new HomeFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Home Fragment"); 
        item.setChecked(true); 
        drawerLayout.closeDrawers(); 
        break; 

       case R.id.id_rewards: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new RewardsFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Rewards"); 
        item.setChecked(true); 
        drawerLayout.closeDrawers(); 
        break; 

       case R.id.id_settings: 
        fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
        fragmentTransaction.replace(R.id.main_container, new SettingsFragment()); 
        fragmentTransaction.commit(); 
        getSupportActionBar().setTitle("Settings Fragment"); 
        item.setChecked(true); 
        drawerLayout.closeDrawers(); 
        break; 
      } 



      return true; 
     } 
    }); 

} 


    @Override 
    protected void onPostCreate (Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    actionBarDrawerToggle.syncState(); 
} 

} 

и мой rewardsfragment ...

package east.myapplication; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 


    public class RewardsFragment extends Activity { 

    Button button; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_rewards); 
    Button button = (Button) findViewById(R.id.button); 
    Button anotherButton = (Button) findViewById(R.id.button2); 
    Button anotherButton2 = (Button) findViewById(R.id.button3); 
    Button anotherButton3 = (Button) findViewById(R.id.button4); 
    Button anotherButton4 = (Button) findViewById(R.id.button5); 
    Button anotherButton5 = (Button) findViewById(R.id.button6); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent intent = new Intent(RewardsFragment.this, AmazonActivity.class); 
      RewardsFragment.this.startActivity(intent); 
     } 
    }); 

    /* new button to open a new activity */ 
    anotherButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, CVSActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 

    /* new button to open a new activity */ 
    anotherButton2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, SephoraActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 

    /* new button to open a new activity */ 
    anotherButton3.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, PlayStationActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 

    /* new button to open a new activity */ 
    anotherButton4.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, AMCActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 

    /* new button to open a new activity */ 
    anotherButton5.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this,    BKActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 
} 

}

проблема заключается fragmentTransaction.replace(R.id.main_container, new RewardsFragment()); имеет красный подчеркивание под RewardsFragment и я не знаю, как это исправить

Я попробовал все, и это то, что я до сих пор ..

package east.myapplication; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.support.v4.app.FragmentTransaction; 
    import android.view.View; 
    import android.widget.Button; 
    import android.support.v4.app.Fragment; 


    public class RewardsFragment extends Fragment { 

    Button button; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_rewards); 
    Button button = (Button) findViewById(R.id.button); 
    Button anotherButton = (Button) findViewById(R.id.button2); 
    Button anotherButton2 = (Button) findViewById(R.id.button3); 
    Button anotherButton3 = (Button) findViewById(R.id.button4); 
    Button anotherButton4 = (Button) findViewById(R.id.button5); 
    Button anotherButton5 = (Button) findViewById(R.id.button6); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent intent = new Intent(RewardsFragment.this, AmazonActivity.class); 
      RewardsFragment.this.startActivity(intent); 
     } 
    }); 

/* new button to open a new activity */ 
    anotherButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, CVSActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 

/* new button to open a new activity */ 
    anotherButton2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, SephoraActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 

/* new button to open a new activity */ 
    anotherButton3.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, PlayStationActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 

/* new button to open a new activity */ 
    anotherButton4.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, AMCActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    }); 

/* new button to open a new activity */ 
    anotherButton5.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      // creating the intent 
      Intent intent = new Intent(RewardsFragment.this, BKActivity.class); 
      // starting activity with the created intent 
      startActivity(intent); 
     } 
    });} 

}

Мой setContentView ярко-красный , мой findViewByID красный, и, наконец, (RewardsFragment.this, AmazonActivity.class); красная вместе со всем моим другим .class игровой

Вот мои ошибки

Ошибка: (25, 9) Ошибка: не удается найти метод символа setContentView (INT)

Ошибки: (26, 34) ошибку : не может найти метод символ findViewById (INT)

ошибка: (27, 41) об ошибке: не удается найти метод символ findViewById (INT)

ошибка: (28, 42) об ошибке: не может найти метод символ findViewById (Int)

Ошибка: (29, 42) Ошибка: не удается найти метод символ findViewById (INT)

Ошибка: (30, 42) Ошибка: не удается найти метод символ findViewById (INT)

Ошибка: (31, 42) ошибка: не удается найти метод символа findViewById (INT)

ошибка: (34, 33) ошибки: нет подходящего конструктора найден для Намерения (RewardsFragment, класс) конструктора Intent.Intent (String, Uri) не применяется (несоответствие аргументов; RewardsFragment не может быть преобразован в строку) конструктор Intent.Intent (контекст, класс) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в контексте)

Ошибка: (43, 33) Ошибка: нет подходящего конструктора не найдено для Намерение (RewardsFragment, класс) конструктор Intent.Intent (String, Uri) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в строку) конструктор Intent.Intent (контекст, класс) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в контекст)

Ошибка: (53, 33) error: не найдено подходящего конструктора fo r Intent (RewardsFragment, Class) Конструктор Intent.Intent (String, Uri) не применим (несоответствие аргумента; RewardsFragment не может быть преобразован в String) Конструктор Intent.Намерение (контекст, класс) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в контекст)

Ошибка: (63, 33) об ошибке: нет подходящего конструктора найден для Намерения (RewardsFragment, класс) конструктора Intent.Intent (String, Uri) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в строку) конструктора Intent.Intent (контекст, класс) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в контекст)

ошибки : (73, 33) error: не найдено подходящего конструктора для Intent (RewardsFragment, Class) constructor Intent.Intent (String, U ri) не применимо (несоответствие аргумента; RewardsFragment не может быть преобразован в строку) конструктор Intent.Intent (контекст, класс) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в контексте)

Ошибка: (83, 33) Ошибка: нет подходящего конструктора не найдено для Намерение (RewardsFragment, класс) конструктор Intent.Intent (String, Uri) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в строку) конструктор Intent.Intent (контекст, класс) не применяется (аргумент несоответствия; RewardsFragment не может быть преобразован в контекст)

Ошибка: выполнение выполнено для задачи ': app: compileDebugJava WithJavac.

Compilation failed; see the compiler error output for details.

+0

вы можете разместить свой журнал – Jois

+0

объект, который вы прошли в замене() должен быть объект типа фрагмента, как я учился в учебнике. Пожалуйста, распечатайте предложение или войдите в систему http://developer.android.com/intl/es/guide/components/fragments.html –

ответ

1

Вы

RewardsFragment extend Fragment 

import android.support.v4.app.Fragment; 

И

anotherButton3.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     // creating the intent 
     Intent intent = new Intent(getActivity, PlayStationActivity.class); 
     // starting activity with the created intent 
     getActivity.startActivity(intent); 
    } 
}); 

должен заменить

case R.id.home_id: 
       fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
       fragmentTransaction.replace(R.id.main_container, new HomeFragment()); 
       fragmentTransaction.commit(); 
       getSupportActionBar().setTitle("Home Fragment"); 
       item.setChecked(true); 
       drawerLayout.closeDrawers(); 
       break; 

Для

FragmentManager manager = getSupportFragmentManager(); 
    manager.beginTransaction() 
      .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) 
      .replace(R.id.content_main, new HomeFragment()) 
      .commit(); 

Это пример расширения фрагмента

public class SettingFragment extends Fragment implements View.OnClickListener { 
private TextView mTextTest; 
private TextView mTextTest1; 


@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_setting, container, false); 
    addControl(view); 

    return view; 
} 



private void addControl(View view) { 
    mTextTest = (TextView) view.findViewById(R.id.text_test); 
mTextTest1 = (TextView) view.findViewById(R.id.text_test_1); 
    mTextTest.setOnClickListener(this); 
    mTextTest1.setOnClickListener(this); 

} 


@Override 
public void onClick(View v) { 

    FragmentManager manager = getActivity().getSupportFragmentManager(); 
    switch (v.getId()) { 
     case R.id.text_test: 
      manager.beginTransaction() 
        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) 
        .replace(R.id.content_main, new YourFragment()) 
        .commit(); 
      break; 
    case R.id.text_test_1: 
    startActivity(new Intent(getActivity(), YourActivity.class)) 
      break; 
     default: 
      break; 
    } 

} 

}

+0

import suport.v4.Fragment показывает ошибку – Pablo

+0

import android.support.v4.app .Фрагмент; –

+0

Я обновляю свой ответ –

2
public class RewardsFragment extends Activity 

Ваш "Фрагмент" на самом деле является активность.

Изменить это расширить фрагмент и добавить пустой открытый конструктор, т.е.

public class RewardsFragment extends Fragment { 

    public RewardsFragment(){ 
    //Default blank constructor 
    } 

    //The rest of your code here 

} 

На полностью выключенном ноте, вы должны really consider using Butterknife для @Bind и @Onclick вместо многих findViewByIds и нажмите слушателей в вашем код. Это поможет начать его очищать.

+0

After, RewardsFragment {есть ли ошибка, указывающая, что Идентификатор ожидается? – Pablo

+0

Извините, я набрал код неправильно, он должен быть общедоступным. RewardsFragment() {}. Я обновлю ответ. –

+0

@ErickBachhuber после последнего}, есть еще одна ошибка, предполагающая ожидаемый «класс» или «интерфейс» – Pablo

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