2012-08-02 87 views
2

我正在为本地报纸和atm开发android应用程序我试图在文章之间实施滑动。我的主要活动是HNappActivity,文章展示的活动是AcrticleActivity。我的问题是,刷卡不能工作,我绝望,因为我不知道什么是错的。这里的代码,其中刷卡实现:android - 在活动之间滑动

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

发生了什么,你是否面临任何问题.. – AAnkit 2012-08-02 10:54:22

回答

1

我甚至没有看代码,问题是你想活动之间刷卡。 您应该尝试在片段之间滑动,同一活动中的所有片段。

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

编辑:

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

是的,我虽然关于这一点,但在片段,我不能做: hnWebView =(WebView)findViewById(R.id.webview); – 2012-08-03 09:20:44

+0

当然可以。 '私人WebView hnWebView; @Override \t public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){View v = inflater.inflate(R.layout.webViewFragment,null); hnWebView =(web视图)v.findViewById(R.id.webview); }' – Budius 2012-08-05 19:00:57