0

こんにちは、2 つのフラグメント アクティビティがありますか? メインのアクティビティが 2 番目のアクティビティを起動する? 今、私はこれらの間で2つのスイッチを頻繁に使用しています。

通常の活動では、これは不可能です。2 番目のアクティビティからメイン アクティビティに切り替えると、2 番目のアクティビティがスタックからポップアップして破棄されます。ここでフラグメントアクティビティを使用すると、これは可能ですか? もしそうなら、これを達成する方法は?

詳しくは、メイン アクティビティを起動した後、メイン アクティビティのボタンを押すことで、2 番目のフラグメント アクティビティを起動します。次に、Android携帯の戻るキーを使用してメインフラグメントアクティビティに移動しましたが、メインアクティビティのボタンを押して起動した2番目のフラグメントアクティビティに戻りたいと思います。親切に助けて?

以下は私のコードです:-

以下はメインフェストファイルです。

    <application android:allowBackup="true" >
    <activity
        android:theme="@android:style/Theme.Dialog"
        android:name="com.ymd.ipmsg.main.MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:theme="@android:style/Theme.Dialog"
        android:name="com.ymd.ipmsg.activities.ChatActivity"
        android:label="@string/title_activity_chat"
        android:parentActivityName="android.support.v4.app.FragmentActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="android.support.v4.app.FragmentActivity" />
    </activity>
</application>

以下は私の activity_chat.xml です

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:orientation="vertical"   >

<fragment android:name="com.ymd.ipmsg.fragments.DeviceFragmentTB"
          android:id="@+id/tb_fragment"
          android:layout_weight="1"
          android:layout_width="match_parent" 
          android:layout_height="30dp"/>

    </LinearLayout>

以下は私の activity_main.xml です

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:orientation="vertical"   >

<fragment android:name="com.ymd.ipmsg.fragments.DeviceFragmentTB"
          android:id="@+id/tb_fragment"
          android:layout_weight="1"
          android:layout_width="match_parent" 
          android:layout_height="30dp"/>

    </LinearLayout>

以下は私のdevice_frag.mlです

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/device_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" 
android:orientation="horizontal" >

<TextView
    android:id="@+id/name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/device_name" 
    android:textIsSelectable="true" 
    android:tag="name" />

<TextView
    android:id="@+id/device"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/device_type" 
    android:textIsSelectable="true" 
    android:tag="device"/>

<TextView
    android:id="@+id/ipadd"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/device_ip" 
    android:textIsSelectable="true"
    android:tag="ipadd" />  

    </LinearLayout>

次は私の DeviceFragmentTB.java です

    package com.ymd.ipmsg.fragments;

    import android.content.Intent;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.ViewTreeObserver;
    import android.widget.TextView;

    import com.ymd.ipmsg.activities.ChatActivity;
    import com.ymd.ipmsg.main.R;

    public class DeviceFragmentTB extends Fragment  {

private Boolean flag=true;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    super.onCreateView(inflater, container, savedInstanceState);
    View view=inflater.inflate(R.layout.device_frag, container, false); 
    TextView nameView = (TextView)view.findViewById(R.id.name);
    nameView.setOnClickListener(new View.OnClickListener() {            
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(v.getContext(),ChatActivity.class);
            startActivity(intent)   ;


        }
    });
    view.findViewById(R.id.device_layout).getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            if(flag){
                View deviceLayout = getView().findViewById(R.id.device_layout);
                int deviceFragWidth=deviceLayout.getWidth();
                int eachViewWidth=deviceFragWidth/3;                    
                TextView nameView = (TextView)getView().findViewById(R.id.name);
                nameView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                nameView.setTextSize(25);
                nameView.setBackgroundColor(Color.DKGRAY);
                nameView.setTextColor(Color.RED);
                nameView.setWidth(eachViewWidth);
                TextView deviceView = (TextView)getView().findViewById(R.id.device);
                deviceView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                deviceView.setTextSize(25);
                deviceView.setTextColor(Color.RED);
                deviceView.setBackgroundColor(Color.DKGRAY);
                deviceView.setWidth(eachViewWidth);
                TextView ipaddView = (TextView)getView().findViewById(R.id.ipadd);
                ipaddView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                ipaddView.setTextSize(25);
                ipaddView.setBackgroundColor(Color.DKGRAY);
                ipaddView.setTextColor(Color.RED);
                ipaddView.setWidth(eachViewWidth);                      
                flag=false;
                System.out.println("ok sir");
            }               
        }
    });

    return view;
}   

    }

以下は私の MainActivity.java です

    package com.ymd.ipmsg.main;


    import android.annotation.TargetApi;
    import android.content.Intent;
    import android.os.Build;
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.NavUtils;
    import android.view.Gravity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.LinearLayout;
    import android.widget.TextView;

    import com.ymd.ipmsg.activities.ChatActivity;
    import com.ymd.ipmsg.fragments.DeviceFragment;

    public class MainActivity extends FragmentActivity implements DeviceFragment.DeviceFragmentListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Show the Up button in the action bar.
   // setupActionBar();

}   


@Override
public void onDeviceSelected(View view){
    String ip=null;
    if(((String)view.getTag()).equalsIgnoreCase("ipadd")){
        TextView tv=(TextView)view;
        ip=tv.getText().toString();
    }else{
        LinearLayout llo=(LinearLayout)view.getParent();
        TextView tv= (TextView)llo.getChildAt(2);
        ip=tv.getText().toString();
    }       
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
    Window win=getWindow();     
    WindowManager.LayoutParams wlp=win.getAttributes();
    wlp.gravity=Gravity.LEFT | Gravity.TOP;
    wlp.x=10;
    wlp.y=10;
    wlp.width=200;
    wlp.height=400;
    win.setAttributes(wlp);

}

    }

以下は私のチャット活動 ChatActiviy.java です

    package com.ymd.ipmsg.activities;

    import android.annotation.TargetApi;
    import android.os.Build;
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.NavUtils;
    import android.view.Gravity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.Window;
    import android.view.WindowManager;

    import com.ymd.ipmsg.main.R;

    public class ChatActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);
    // Show the Up button in the action bar.
    //setupActionBar();
}



@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
    Window win=getWindow();     
    WindowManager.LayoutParams wlp=win.getAttributes();
    wlp.gravity=Gravity.LEFT | Gravity.TOP;
    wlp.x=10;
    wlp.y=450;
    wlp.width=200;
    wlp.height=400;
    win.setAttributes(wlp);

}

   }
4

3 に答える 3

0

から切り替えたい場合

1 -A -> B(両方ともアクティビティ)

ボタンクリック時にこれを使用

Intent intent = new Intent(this,B.class);
startActivity(intent);

2-B -> A

ボタンクリックでこれを使用します

finish()

cousefinish()は現在のアクティビティを終了します。そして、あなたは以前に持っていたものを画面に表示します

于 2013-03-29T09:06:10.210 に答える
0

2 つのアクティビティ A と B があるとします。menifest ファイルにこれを追加するだけです。

        <activity
        android:name=".B"
        android:theme="@android:style/Theme.Dialog" />

それはうまくいきます。ありがとう。

于 2013-03-29T09:29:53.590 に答える