好的,所以我尝试了两种类型的代码来让它工作,当我按下按钮进入另一个 Activity 时,它一直给我强制关闭。我正在使用 Fragment 并且该 Fragments 代码中有一个按钮,但我似乎无法让它工作。我不是经验丰富的 Android 开发人员,但我正在尽力学习。
Java代码如下:
第一种方法
public class About extends Fragment {
Intent intent;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.about, container, false);
intent = new Intent(getActivity(), Contact_Developer.class);
final Button button = (Button) rootView.findViewById(R.id.btnContactDev);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(intent);
}
});
return rootView;
}
}
第二种方法
public class About extends Fragment {
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.about, container, false);
Button button = (Button) rootView.findViewById(R.id.btnContactDev);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(getActivity(), Contact_Developer.class);
getActivity().startActivity(intent);
}
});
return rootView;
}
}
我真的不知道发生了什么,也不知道为什么我会被强制关闭,但如果有人能帮助我并解释一下我做错了什么,那就足够了
最佳答案
不要为 fragment 中的 fragment 按钮处理 onClick
。让它去它的父 Activity 。并从父 Activity 开始 Activity 。
要确保按钮 onClick
事件被发送到父 Activity ,请确保在您的 about.xml
中,对于具有 id btnContactDev 的按钮
,你有以下参数:
<Button android:id="@+id/btnContactDev"
android:onClick="buttonClick"
...
/>
并且在您的父 Activity (About
fragment 的父 Activity )中,您有:
public void buttonClick(View v) {
switch(v.getId()) {
case R.id.btnContactDev:
Intent myIntent = new Intent();
myIntent.setClassName(your_package_name_string, your_activity_name_string);
// for ex: your package name can be "com.example"
// your activity name will be "com.example.Contact_Developer"
startActivity(myIntent);
break;
}
}
HTH.
PS:此解决方案非常适合您的要求。一般来说,最好在 fragment 类内部处理 fragment 相关的onClick
事件。
PS:是的,正如其他解决方案所说,确保您已在 Manifest
文件中注册了 Contact_Developer
Activity 。
关于java - 使用 fragment 按钮打开另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20735723/