【问题标题】:Moving from One Fragment to another activity Using ListView使用 ListView 从一个片段移动到另一个活动
【发布时间】:2016-01-09 08:40:31
【问题描述】:

我正在使用导航抽屉,当单击其中的 menu_item 时,它会从片段移动到另一个。 在我的一个片段中,我有一个列表视图。 单击列表视图项之一时,我必须移动到另一个活动而不是片段 这是 Activity 和片段的代码。 我使用了意图,但它仍然在意图的参数上给出错误。

“一个”片段 包 com.navigate2;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View; 
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;


 /**
  * A simple {@link Fragment} subclass.
  */
  public class One extends Fragment {


  public One() {
      // Required empty public constructor
  }


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_one, container, false);

    ListView listView = (ListView)listView.findViewById(R.id.mobile_list2);
    listView.setBackgroundColor(Color.WHITE);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            switch (position)
            {
                case 0:
                    Intent intent = new Intent(One.this,AndroidClass.class);
                    startActivity(intent);
            }
        }
    });
}


}

“AndroidClass”活动

   package com.navigate2;

  import android.os.Bundle;
  import android.os.PersistableBundle;
  import android.support.v7.app.AppCompatActivity;

  /**
  * Created by Nathani Aliakbar on 06-01-2016.
  */
  public class AndroidClass extends AppCompatActivity
  {
   @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.textview);
  }
  }

【问题讨论】:

  • 使用 getActivity() 而不是 One.this 在意图@Ali Akbar
  • A return 语句将退出该方法 - 立即在 onCreateView() 中调用 return 意味着该方法中的其余代码无法访问。

标签: android listview android-fragments android-intent


【解决方案1】:

更改onCreateView()

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootview = inflater.inflate(R.layout.fragment_one, container, false);

ListView listView = (ListView)   rootview.findViewById(R.id.mobile_list2);

listView.setBackgroundColor(Color.WHITE);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        switch (position)
        {
            case 0:
                Intent intent = new Intent(One.this,AndroidClass.class);
                startActivity(intent);
        }
    }
});

 return rootview;
}

【讨论】:

    【解决方案2】:

    在添加 onItemCliclListener 之前立即返回的片段 onCreateView:

    return inflater.inflate(R.layout.fragment_one, container, false);
    

    试试这样:

    View view = inflater.inflate(R.layout.fragment_one, container, false);
    ListView listView = (ListView)listView.findViewById(R.id.mobile_list2);
    listView.setBackgroundColor(Color.WHITE);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
            switch (position)
            {
                case 0:
                    Intent intent = new Intent(One.this,AndroidClass.class);
                    startActivity(intent);
            }
        }
    });
    return view;
    

    【讨论】:

    • 完成给出错误 = 列表视图尚未初始化
    【解决方案3】:

    使用

      View view = inflater.inflate(R.layout.fragment_one, container, false);
      ListView listView = (ListView)listView.findViewById(R.id.mobile_list2);
     Intent intent = new Intent(getActivity(),AndroidClass.class);
                        startActivity(intent);
    
    
    return view;
    

    【讨论】:

    • 我这样做给出了这样的错误 ListView listView = (ListView)listView.findViewById(R.id.mobile_list2);//Error=Unreachable statement
    • 错误:(32, 18) 错误: 无法访问的语句错误:(46, 5) 错误: 缺少返回语句错误:(32, 39) 错误: 变量 listView 可能尚未初始化错误: 执行任务 ':app:compileDebugJavaWithJavac' 失败。 > 编译失败;有关详细信息,请参阅编译器错误输出。
    【解决方案4】:
    View view = inflater.inflate(R.layout.fragment_one, container, false);
    ListView listView = (ListView)view.findViewById(R.id.mobile_list2);
    listView.setBackgroundColor(Color.WHITE);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
        switch (position)
        {
            case 0:
                Intent intent = new Intent(One.this,AndroidClass.class);
                startActivity(intent);
        }
    }
    });
    return view;
    

    【讨论】:

    • 请添加说明为什么这是问题的答案。此答案已被标记为低质量,因为只有代码答案。
    猜你喜欢
    • 2015-05-11
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2015-09-15
    • 1970-01-01
    相关资源
    最近更新 更多