[英]Button won't open new activity
So im trying to make my buttons open new activities within my navigation drawer fragments but something broke in my MainActivity.java 所以我试图让我的按钮在导航抽屉片段中打开新的活动,但是MainActivity.java中出现了问题
my 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();
}
}
and my 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);
}
});
}
} }
The problem is fragmentTransaction.replace(R.id.main_container, new RewardsFragment());
问题是
fragmentTransaction.replace(R.id.main_container, new RewardsFragment());
it has a red underline under RewardsFragment
and i dont know how to fix it 它在
RewardsFragment
下有一个红色的下划线,我不知道如何解决
I tried everything and this is what I have so far.. 我尝试了一切,这就是我到目前为止所拥有的。
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);
}
});}
} }
My setContentView is bright red, my findViewByID is red, and lastly (RewardsFragment.this, AmazonActivity.class); 我的setContentView是亮红色的,我的findViewByID是红色的,最后是(RewardsFragment.this,AmazonActivity.class); is red along with all my other .class's
和其他所有.class一样是红色的
Here is my bugs 这是我的虫子
Error:(25, 9) error: cannot find symbol method setContentView(int) 错误:(25,9)错误:找不到符号方法setContentView(int)
Error:(26, 34) error: cannot find symbol method findViewById(int) 错误:(26、34)错误:找不到符号方法findViewById(int)
Error:(27, 41) error: cannot find symbol method findViewById(int) 错误:(27、41)错误:找不到符号方法findViewById(int)
Error:(28, 42) error: cannot find symbol method findViewById(int) 错误:(28、42)错误:找不到符号方法findViewById(int)
Error:(29, 42) error: cannot find symbol method findViewById(int) 错误:(29、42)错误:找不到符号方法findViewById(int)
Error:(30, 42) error: cannot find symbol method findViewById(int) 错误:(30,42)错误:找不到符号方法findViewById(int)
Error:(31, 42) error: cannot find symbol method findViewById(int) 错误:(31,42)错误:找不到符号方法findViewById(int)
Error:(34, 33) error: no suitable constructor found for Intent(RewardsFragment,Class) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; RewardsFragment cannot be converted to String) constructor Intent.Intent(Context,Class) is not applicable (argument mismatch; RewardsFragment cannot be converted to Context) 错误:(34、33)错误:没有为Intent(RewardsFragment,Class)构造函数Intent.Intent(String,Uri)找到合适的构造函数(参数不匹配; RewardsFragment无法转换为String)构造函数Intent.Intent(Context,类)不适用(参数不匹配; RewardsFragment无法转换为Context)
Error:(43, 33) error: no suitable constructor found for Intent(RewardsFragment,Class) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; RewardsFragment cannot be converted to String) constructor Intent.Intent(Context,Class) is not applicable (argument mismatch; RewardsFragment cannot be converted to Context) 错误:(43,33)错误:没有为Intent(RewardsFragment,Class)构造函数Intent.Intent(String,Uri)找到合适的构造函数(参数不匹配; RewardsFragment无法转换为String)构造函数Intent.Intent(Context,类)不适用(参数不匹配; RewardsFragment无法转换为Context)
Error:(53, 33) error: no suitable constructor found for Intent(RewardsFragment,Class) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; RewardsFragment cannot be converted to String) constructor Intent.Intent(Context,Class) is not applicable (argument mismatch; RewardsFragment cannot be converted to Context) 错误:(53、33)错误:找不到适用于Intent(RewardsFragment,Class)的合适构造函数Intent.Intent(String,Uri)不适用(参数不匹配; RewardsFragment无法转换为String)构造函数Intent.Intent(Context,类)不适用(参数不匹配; RewardsFragment无法转换为Context)
Error:(63, 33) error: no suitable constructor found for Intent(RewardsFragment,Class) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; RewardsFragment cannot be converted to String) constructor Intent.Intent(Context,Class) is not applicable (argument mismatch; RewardsFragment cannot be converted to Context) 错误:(63、33)错误:没有为Intent(RewardsFragment,Class)构造函数Intent.Intent(String,Uri)找到合适的构造函数不适用(参数不匹配; RewardsFragment无法转换为String)构造函数Intent.Intent(Context,类)不适用(参数不匹配; RewardsFragment无法转换为Context)
Error:(73, 33) error: no suitable constructor found for Intent(RewardsFragment,Class) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; RewardsFragment cannot be converted to String) constructor Intent.Intent(Context,Class) is not applicable (argument mismatch; RewardsFragment cannot be converted to Context) 错误:(73,33)错误:没有为Intent(RewardsFragment,Class)构造函数Intent.Intent(String,Uri)找到合适的构造函数(参数不匹配; RewardsFragment无法转换为String)构造函数Intent.Intent(Context,类)不适用(参数不匹配; RewardsFragment无法转换为Context)
Error:(83, 33) error: no suitable constructor found for Intent(RewardsFragment,Class) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; RewardsFragment cannot be converted to String) constructor Intent.Intent(Context,Class) is not applicable (argument mismatch; RewardsFragment cannot be converted to Context) 错误:(83,33)错误:没有为Intent(RewardsFragment,Class)构造函数Intent.Intent(String,Uri)找到合适的构造函数(参数不匹配; RewardsFragment无法转换为String)构造函数Intent.Intent(Context,类)不适用(参数不匹配; RewardsFragment无法转换为Context)
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 错误:任务':app:compileDebugJavaWithJavac'的执行失败。
Compilation failed;
编译失败; see the compiler error output for details.
有关详细信息,请参见编译器错误输出。
public class RewardsFragment extends Activity
Your "Fragment" actually is an Activity. 您的“片段”实际上是一个活动。
Change this to extend Fragment and add a blank public constructor, ie 更改它以扩展Fragment并添加一个空白的公共构造函数,即
public class RewardsFragment extends Fragment {
public RewardsFragment(){
//Default blank constructor
}
//The rest of your code here
}
On a completely off note, you should really consider using Butterknife for @Bind and @Onclick instead of so many findViewByIds and click listeners in your code. 需要特别注意的是,您应该真正考虑对@Bind和@Onclick 使用Butterknife ,而不要在代码中使用那么多的findViewByIds和click侦听器。 It will help start to clean it up.
这将有助于开始清理它。
You must 你必须
RewardsFragment extend Fragment
import android.support.v4.app.Fragment;
And 和
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);
}
});
Replace 更换
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;
To 至
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.content_main, new HomeFragment())
.commit();
This is example extend Fragment 这是扩展片段的例子
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;
}
}
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.