当前位置: 首页 > 知识库问答 >
问题:

从Mainactive到Fragmentactive的代码问题

伏欣悦
2023-03-14

我在MainActivity中编写了一个简单的代码,其中包含以前成功运行的xml代码。现在,我想制作一个片段,并在该片段中运行MainActivity代码。我什么都试过了,甚至把两种代码结合起来等等,但都没用。我在下面附上我的主要活动代码。这是我想在片段中使用的。我已经知道片段类似于活动的子活动,两者都有单独的XML,我也知道如何使用。只是无法将旧应用程序中的MainActivity代码用作新应用程序中的FragmentActivity
1)需要作为片段的主活动代码

package com.ranatalha.userauthority;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;

public class MainActivity
        extends AppCompatActivity
        implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener{

    private TextView mytext;
    private GestureDetector gestureDetector;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //this is above two lines cox phly content set hoga tbi agy kam hna na
        this.gestureDetector = new GestureDetector(this, this);
        gestureDetector.setOnDoubleTapListener(this); }

//******************Upon clicking the button*************************

    public void changetextshort(View v) {
        mytext = (TextView) findViewById(R.id.mytext);
        mytext.setText("Surpriseeee"); }

    //******************initializing touch event*************************
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        this.gestureDetector.onTouchEvent(event);
        return super.onTouchEvent(event);}

    //******************Implements Methods from alt+ins(0) for touch properties*************************
    @Override
    public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
        mytext.setText("I tapped Once");
        return false;}

    @Override
    public boolean onDoubleTap(MotionEvent motionEvent) {
        mytext.setText("I tapped Twice");
        return false;}

    @Override
    public boolean onDoubleTapEvent(MotionEvent motionEvent) {
        mytext.setText("Double Tap Event Occurred");
        return false;}

    @Override
    public boolean onDown(MotionEvent motionEvent) {
        mytext.setText("Down goes");
        return false;}

    @Override
    public void onShowPress(MotionEvent motionEvent) {
        mytext.setText("I have pressed");}

    @Override
    public boolean onSingleTapUp(MotionEvent motionEvent) {
        mytext.setText("Single Tap Up");
        return false;}

    @Override
    public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
        mytext.setText("I'm Scrolling");
        return false;}

    @Override
    public void onLongPress(MotionEvent motionEvent) {
        mytext.setText("I long pressed");}

    @Override
    public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
        mytext.setText("I FLINNGED");
        return false; }
}


2)片段代码(MainActivity现在没有任何代码,除了MainActivity的基本代码,如类名和OnCreate代码-尽管我在第3点也添加了MainActivity代码,这实际上需要与我们在android应用程序中制作片段时差不多)

package com.ranatalha.userauthority;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class TopSectionFragment extends Fragment {

    public class Top
            extends AppCompatActivity
            implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener{

        private TextView mytext;
        private GestureDetector gestureDetector;


    //******************Override method oncreateview for fragment*************************
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.top_section_fragment,container, false);
        this.gestureDetector = new GestureDetector(this, this);
        gestureDetector.setOnDoubleTapListener(this);
        return view; //designing of top section fragment completed
         }

//******************Upon clicking the button*************************

        public void changetextshort(View v) {
            mytext = (TextView) findViewById(R.id.mytext);
            mytext.setText("Surpriseeee"); }

        //******************initializing touch event*************************
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            this.gestureDetector.onTouchEvent(event);
            return super.onTouchEvent(event);}

        //******************Implements Methods from alt+ins(0) for touch properties*************************
        @Override
        public boolean onSingleTapConfirmed(MotionEvent motionEvent) {
            mytext.setText("I tapped Once");
            return false;}

        @Override
        public boolean onDoubleTap(MotionEvent motionEvent) {
            mytext.setText("I tapped Twice");
            return false;}

        @Override
        public boolean onDoubleTapEvent(MotionEvent motionEvent) {
            mytext.setText("Double Tap Event Occurred");
            return false;}

        @Override
        public boolean onDown(MotionEvent motionEvent) {
            mytext.setText("Down goes");
            return false;}

        @Override
        public void onShowPress(MotionEvent motionEvent) {
            mytext.setText("I have pressed");}

        @Override
        public boolean onSingleTapUp(MotionEvent motionEvent) {
            mytext.setText("Single Tap Up");
            return false;}

        @Override
        public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
            mytext.setText("I'm Scrolling");
            return false;}

        @Override
        public void onLongPress(MotionEvent motionEvent) {
            mytext.setText("I long pressed");}

        @Override
        public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
            mytext.setText("I FLINNGED");
            return false; }
    }
}


3)Mainactive代码(将包含Fraank子活动)

package com.ranatalha.userauthority;

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

public class MainActivity
        extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); }
}

共有2个答案

穆歌者
2023-03-14

不清楚你所说的“制作一个片段并在该片段中运行Mainactive代码”是什么意思......

如果您想启动一个活动并使其覆盖片段,可以尝试使用MCeley在“从片段启动活动”中的代码

> Intent intent = new Intent(getActivity(), mFragmentFavorite.class);
> startActivity(intent);
艾浩穰
2023-03-14

当从活动和片段转换代码时,需要记住的一件主要事情是,您可能必须切换使用上下文的内容<这行:This。gestureDetector=新的gestureDetector(this,this) 很可能是给你带来麻烦的事情之一
这:

GestureDetector(上下文上下文,GestureDetector。OnGestureListener监听器)

可能是您尝试使用的构造函数。作为上下文的参数需要从活动中的this更改为片段中的getContext()(或扩展上下文的内容)

用于首先创建片段:
https://developer.android.com/guide/components/fragments.html

// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();


代码示例中提到的容器通常类似于FrameLayout

 类似资料:
  • 我尝试使用Android兼容库(或现在称为支持库)v4用于预蜂窝Android设备。我理解,我应该使用FragmentActivity类,而不是使用Fragment类。根据我能找到的所有教程,我可以在Fragment类中使用onCreateView方法: 公共视图onCreateView(LayoutFlater充气机、ViewGroup容器、捆绑包保存状态) 然而,FragmentActivit

  • 当从SVN中提取iOS代码时,我有一个问题。我的代码在我的MAC上运行良好,但当我将它上传到SVN并尝试构建我的项目时,它一遍又一遍地显示相同的错误。 Apple Mach-O链接器(id)错误 ld:找不到-lzbar命令/developer/platforms/iphonesimulator的库。platform/developer/usr/bin/clang失败,退出代码为1 这个问题很烦人

  • 我有一个我正在迁移到。我唯一无法更改的两个代码段如下。 只是想知道以下内容应该在中 非常感谢任何建议,

  • 我有java类,我想把它们转换成pl sql包。是否有任何工具(开源或商业)可用于进行转换。

  • 问题内容: 我需要具有当前选定的行ID才能构建一个JSON字符串,该字符串将传递给php脚本以创建一个选择,因此我将脚本引用和代码封装在一个函数中。 但是,这样做会产生错误。 这是代码段: 有人知道发生了什么吗? 更新: 问题答案: 该属性不能是一个函数。如果在建立select期间需要将任何其他信息发送到服务器,则可以使用ajaxSelectOptions选项,如我在此所述。在您的情况下,将涉及以