title: Android FLAG_ACTIVITY_NEW_TASK not working
body: <p>I'm having an issue with calling startActivity() on an Intent from within my custom onClick Listener.  The code compiles fine, but when it gets to that point in the execution, I get a nullPointerException.</p>
  
  <p><strong>Code</strong></p>
  
  <pre><code>private static class ProverbAdapter extends ArrayAdapter&lt;String&gt; {
      MainActivity ma;
      public ProverbAdapter(Context context, int layout, int resId, String[] items) {
          super(context, layout, resId, items);
          this.ma = new MainActivity();
      }
  
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
          View row = convertView;
          Context context = getContext();
          if(row == null) {
              row = LayoutInflater.from(context).inflate(R.layout.proverb_layout, parent, false);
          }
  
          String item = getItem(position);
          TextView proverbDate = (TextView)row.findViewById(R.id.proverb_date);
          TextView proverbText = (TextView)row.findViewById(R.id.proverb_content);
          String[] data = item.split("----");
          proverbDate.setText(data[0]);
          proverbText.setText(data[1]);
  
          ImageButton emailButton = (ImageButton)row.findViewById(R.id.emailButton);
          ImageButton twitterButton = (ImageButton)row.findViewById(R.id.twitterButton);
          ImageButton facebookButton = (ImageButton)row.findViewById(R.id.facebookButton);
  
          emailButton.setOnClickListener(this.ma.new ProverbOnClickListener(data[0], data[1], "email", context));
          twitterButton.setOnClickListener(this.ma.new ProverbOnClickListener(data[0], data[1], "twitter", context));
          facebookButton.setOnClickListener(this.ma.new ProverbOnClickListener(data[0], data[1], "facebook", context));
  
          return row;
      }
  }
  
  public class ProverbOnClickListener implements OnClickListener {
  
       String proverb_date, proverb_content, eventType;
       Context context;
  
       public ProverbOnClickListener(String proverb_date, String proverb_content, String eventType, Context context) {
            this.proverb_date = proverb_date;
            this.proverb_content = proverb_content;
            this.eventType = eventType;
            this.context = context;
       }
  
       @Override
       public void onClick(View v) {
           Toast.makeText(this.context, this.eventType + ": " + this.proverb_content, Toast.LENGTH_SHORT).show();
           if(this.eventType == "email") {
               Intent i = new Intent(Intent.ACTION_SEND);
                       i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               i.setType("message/rfc822");
               i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"});
               i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
               i.putExtra(Intent.EXTRA_TEXT   , "body of email");
               try {
                   context.startActivity(Intent.createChooser(i, "Send mail..."));
               } catch (android.content.ActivityNotFoundException ex) {
                   Toast.makeText(this.context, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
               }
           }
       }
  
    }
  </code></pre>
  
  <p><strong>Exception</strong></p>
  
  <blockquote>
    <p>FATAL EXCEPTION: main android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?</p>
  </blockquote>
  
  <p>I added the new flag as the compiler suggested, but it still crashes with the same error.</p>
  
  <p><em><strong></em>* *<em>EDIT</strong> *</em>***</p>
  
  <p>After following advice in the first response, my adapter now looks like:</p>
  
  <pre><code>private static class ProverbAdapter extends ArrayAdapter&lt;String&gt; {
      Context context;
      public ProverbAdapter(Context context, int layout, int resId, String[] items) {
          super(context, layout, resId, items);
          this.context = context;
      }
  
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
          View row = convertView;
          if(row == null) {
              LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              row = li.inflate(R.layout.proverb_layout, parent, false);
          }
  
          String item = getItem(position);
          TextView proverbDate = (TextView)row.findViewById(R.id.proverb_date);
          TextView proverbText = (TextView)row.findViewById(R.id.proverb_content);
          String[] data = item.split("----");
          proverbDate.setText(data[0]);
          proverbText.setText(data[1]);
  
          ImageButton emailButton = (ImageButton)row.findViewById(R.id.emailButton);
          ImageButton twitterButton = (ImageButton)row.findViewById(R.id.twitterButton);
          ImageButton facebookButton = (ImageButton)row.findViewById(R.id.facebookButton);
  
          emailButton.setOnClickListener(new ProverbOnClickListener(data[0], data[1], "email", context));
          twitterButton.setOnClickListener(new ProverbOnClickListener(data[0], data[1], "twitter", context));
          facebookButton.setOnClickListener(new ProverbOnClickListener(data[0], data[1], "facebook", context));
  
          return row;
      }
  }
  </code></pre>
  
  <p>However I'm receiving a compilation error.</p>
  
  <blockquote>
    <p>No enclosing instance type of MainActivity is accessible.</p>
  </blockquote>