2012-08-02 3 views
2

Je développe l'application Android pour un journal local et ATM Je suis en train d'essayer de glisser entre les articles. Mon activité principale est HNappActivity et l'activité pour l'affichage d'articles est AcrticleActivity. Mon problème est, que le glissement ne fonctionnera pas et je suis désespéré parce que je n'ai aucune idée de ce qui ne va pas. le code est ici, où est mis en œuvre balayant:android - glisser entre les activités

public class ArticleActivity extends SherlockActivity { 

int hnCatIndex, hnArtIndex; 
WebView hnWebView; 

private static final int SWIPE_MIN_DISTANCE = 120; 
private static final int SWIPE_MAX_OFF_PATH = 250; 
private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
private GestureDetector gestureDetector; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.article); 

    hnCatIndex = getIntent().getExtras().getInt("catIndex", 0); 
    hnArtIndex = getIntent().getExtras().getInt("artIndex", 0); 
    Article article = Source.getInstance().getCategory(hnCatIndex).getArticle(hnArtIndex); 

    hnWebView=(WebView)findViewById(R.id.webview); 
    hnWebView.loadData(article == null ? "" : article.getBody(), "text/html", 
        "utf-8"); 
    gestureDetector = new GestureDetector(new MyGestureDetector()); 
    View articleview=(View) findViewById(R.id.article_main); 

    articleview.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if (gestureDetector.onTouchEvent(event)) { 
       return true; 
      } 
      return false; 
     } 
    }); 
} 

    class MyGestureDetector extends SimpleOnGestureListener { 
     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 


      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) { 
       return false; 
      } 

      // right to left swipe 
      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      hnArtIndex++; 
      Intent intent = new Intent(ArticleActivity.this.getBaseContext(), ArticleActivity.class); 
      intent.putExtra("catIntext",hnCatIndex); 
      intent.putExtra("artIndex",hnArtIndex); 
      startActivity(intent);   
      ArticleActivity.this.overridePendingTransition(
      R.anim.slide_in_right, 
      R.anim.slide_out_left 
      ); 
      // right to left swipe 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       if (hnArtIndex==1) { 
        Intent intent = new Intent(ArticleActivity.this.getBaseContext(), HNappActivity.class); 
        startActivity(intent); 
        } 
       else { 
        hnArtIndex--; 
        Intent intent = new Intent(ArticleActivity.this.getBaseContext(), ArticleActivity.class); 
        intent.putExtra("catIntext",hnCatIndex); 
        intent.putExtra("artIndex",hnArtIndex); 
        startActivity(intent); 
       } 
      ArticleActivity.this.overridePendingTransition(
      R.anim.slide_in_left, 
      R.anim.slide_out_right 
      ); 
      } 

      return false; 
     } 
      @Override 
      public boolean onDown(MotionEvent e) { 
        return true; 
      } 
} 

}

+0

Qu'est-ce qui se passe, Êtes-vous face à un problème .. – AAnkit

Répondre

1

Je ne l'ai pas lu le code, le problème est que vous essayez de glisser entre les activités. Vous devriez essayer de glisser entre les fragments, tous les fragments dans la même activité.

voir http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html http://developer.android.com/reference/android/support/v4/view/ViewPager.html

modifier:

private WebView hnWebView; 
    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.webViewFragment, null); 
     hnWebView=(WebView)v.findViewById(R.id.webview); 
     return v; 
    } 
+0

oui, je pensais à ce sujet, mais en fragment, je ne peux pas faire: hnWebView = (WebView) findViewById (R.id.webview); –

+0

Bien sûr que vous le pouvez. 'WebView privé hnWebView; @Override \t public View onCreateView (Outil de mise en page Inférieur, conteneur ViewGroup, Bundle savedInstanceState) {Voir v = inflater.inflate (R.layout.webViewFragment, null); hnWebView = (WebView) v.findViewById (R.id.webview); } ' – Budius

Questions connexes