java - 使用 fragment 按钮打开另一个 Activity

标签 java android button android-fragments

好的,所以我尝试了两种类型的代码来让它工作,当我按下按钮进入另一个 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/

相关文章:

java - 空指针异常

java - 更改Keystore值是否会更改 key 密码?

android - 类 PagerAdapter (android) 中 instantiateItem 函数中 'position' 的混淆

ios - 单击按钮不播放音频

java - 优先打包排除和打包包含maven war插件

java - 找不到 spring boot Ojdbc6 类

android - 调用 getString 时 SQL Cursor 抛出内存不足

java - 优化 Android 上的堆大小

JavaScript - 单击按钮时,切换文本问题

button - 检测主干js中的浏览器后退按钮