亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在有意發送整數數據時遇到了一些麻煩。(安卓)

我在有意發送整數數據時遇到了一些麻煩。(安卓)

幕布斯6054654 2023-04-26 14:47:18
我正在嘗試使用意圖將整數數據從一個活動發送到另一個類,但我的整數數據本身只是變為零。所以我做了這個意圖,將有關用戶想要執行多少間隔的數據發送到創建視圖組/視圖持有者的類,具體取決于用戶為回收器視圖選擇的數量。問題是 int 自動變成零,導致回收列表沒有被創建。我試圖用一個隨機數制作列表并且它有效,所以那部分代碼沒有錯。此外,經過一些調試后,我將問題縮小到 getintent 部分,因為在我發送數據之前,數字是正確的,但在我發送數據之后,數字總是變成零。public class MainActivity extends AppCompatActivity {    Button decrementButton;    TextView intervalCountTextView;    Button incrementButton;    int intervalCount = 0;    Button intervalButtonSetter;    private int numberOfIntervals = 0;    private static final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        decrementButton = findViewById(R.id.decrementButton);        intervalCountTextView = findViewById(R.id.intervallCount);        incrementButton = findViewById(R.id.incrementButton);        intervalButtonSetter = findViewById(R.id.intervalButtonSetter);        decrementButton.setVisibility(View.INVISIBLE);        decrementButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                intervalCount--;                intervalCountSetter();            }        });        // make sure you can't decrement past zero        incrementButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                intervalCount++;                intervalCountSetter();            }        });        intervalButtonSetter.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                sendDataToAdapter();            }        });    }
查看完整描述

1 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

目前,您有一個Intent局部變量,其中sendDataToAdapter()獲取間隔數作為額外的。由于您不對 this 執行任何其他操作Intent,一旦該方法完成,它將被垃圾收集,額外的內容將無法從該方法之外的任何地方訪問。


在 中startTimeActivity(),您實例化一個新Intent的開始TimeActivity。這Intent沒有任何額外功能。但這是Intentwhose extras 將傳遞給的TimeActivity。


因此,為了將間隔數作為額外的正確值Intent,您可以將參數numberOfIntervals添加到startTimeActivity() (請注意我使用的是字符串常量以避免錯別字引起的錯誤)


public static final String INTERVAL_COUNT = "INTERVAL_COUNT";


private void startTimeActivity(int numberOfIntervals) {

    Intent intent = new Intent(this, TimeActivity.class);

    intent.putExtra(INTERVAL_COUNT, numberOfIntervals)

    startActivity(intent);

    Log.d(TAG, "startTimeActivity: TimeActivity has been started" + numberOfIntervals);

}

由于您需要知道 中的間隔數CustomAdapter,因此可以向構造函數添加另一個參數:


public CustomAdapter(Context context, ArrayList<Integer> mWorkTW, ArrayList<Integer> mWorkET, ArrayList<Integer> mRestTW, ArrayList<Integer> mRestET, int numberOfIntervals) {

    this.mWorkTW = mWorkTW;

    // ...

    this.numberOfIntervals = numberOfIntervals;

    Log.d(TAG, "CustomAdapter: " + numberOfIntervals);

}

在 中TimeActivity,您可以int通過調用訪問該值getIntent():


private int numberOfIntervals;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_time);

    Log.d(TAG, "onCreate: Started");

    numberOfIntervals = getIntent().getIntExtra(INTERVAL_COUNT, 0);

    Toast.makeText(this, "" + numberOfIntervals, Toast.LENGTH_LONG).show();

    Log.d(TAG, "" + numberOfIntervals);

    initializeViews();

}

最后,您可以按如下方式初始化RecyclerViewin :TimeActivity


private void initializeRecyclerView() {

    Log.d(TAG, "initializeRecyclerView: Initialize RecyclerView");

    RecyclerView intervalRecyclerView = findViewById(R.id.intervalRecyclerView);

    CustomAdapter adapter = new CustomAdapter(this, WTV, WET, RTV, RET, numberOfIntervals);

    intervalRecyclerView.setAdapter(adapter);

    intervalRecyclerView.setLayoutManager(new LinearLayoutManager(this));

}


查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號