【问题标题】:Start a FragmentActivity from adapter class从适配器类启动 FragmentActivity
【发布时间】:2014-08-09 11:49:12
【问题描述】:

我的代码中有一个具有列表视图的活动,我通过适配器类控制此列表视图。每个列表视图中都有一个 TextView,我想通过单击每个项目(TextView)来启动一个 FragmentActivity。这是我的适配器类的代码...

class TrackAdapter extends SimpleAdapter {

Context context;
public TrackAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
    super(context, data, resource, from, to);
}



@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
    final TrackAdapter proxy = this;
    final View trackView = super.getView(position, convertView, parent);

    final TextView name = (TextView) trackView.findViewById(R.id.name);

            Intent intent = new Intent(context ,Poet.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }
    });




    return trackView;
}

}

Poet 类扩展了 FragmentActivity 并实现了 ActioBar.TabListener:

public class Poet extends FragmentActivity implements
    ActionBar.TabListener {

private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;


@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.poet);
}

通过检查 logCat 中的日志,我意识到问题出在这部分..

           Intent intent = new Intent(context ,Poet.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);

通过单击每个 TextView 我得到一个“强制关闭”。请帮我解决这个问题!

【问题讨论】:

    标签: android android-intent onclicklistener android-fragmentactivity


    【解决方案1】:

    试试这个..

    context 为空,您应该初始化上下文,例如 this.context = context;

    Context context;
    public TrackAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);
        this.context = context;
    }
    

    【讨论】:

      【解决方案2】:

      您必须为您的文本视图设置OnClickListener。 添加这一行:

      name .setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      Intent intent = new Intent(context ,Poet.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                  context.startActivity(intent);
                  }
              });
      

      在找到您的文本视图之后和开始新活动之前的代码之间:

      final TextView name = (TextView) trackView.findViewById(R.id.name);
      
              Intent intent = new Intent(context ,Poet.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              context.startActivity(intent);
          }
      });
      

      在你的构造函数中你必须有这个代码(你的上下文是空的):

      this.context = context
      

      如果您的问题没有解决,请发布您的日志。

      【讨论】:

      • 问题是上下文为空。现在它是固定的!天呐! @萨曼
      猜你喜欢
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 2015-01-27
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多